Положить данные в отправленное SMS намерение?
Я хотел бы отправить смс сообщение. Если текст слишком длинный, я делю его на несколько сообщений. Я пытаюсь добавить некоторую дополнительную информацию в намерение "отправлено", чтобы узнать, какая часть была отправлена, и когда все части будут готовы:
ArrayList<String> messageParts = ...;
for (int i = 0; i < messageParts.size(); i++) {
sms.sendTextMessage(
address,
null,
messageParts.get(i),
generateIntent(context, messageParts.size(), i),
null));
}
PendingIntent generateIntent(Context context, int partCount, int partIndex)
{
Intent intent = new Intent("SMS_SENT");
intent.putExtra("partCount", partCount);
intent.putExtra("partIndex", partIndex);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
Сообщение отправлено, и я улавливаю намерение при отправке каждой части, но в намерении всегда содержатся одни и те же данные. Например, "partIndex" всегда равен нулю, хотя для второго сообщения он должен быть равен единице. Похоже, то же самое намерение просто продолжает бросаться в мой приемник вещания. Какой правильный способ сделать это?
Спасибо
2 ответа
Попробуйте использовать FLAG_ONE_SHOT
или иным образом отменяя предыдущий PendingIntent
прежде чем пытаться создать новый.
Вам необходимо добавить уникальный код запроса в вашу трансляцию (второй аргумент метода getBroadcast) для отправки уникальных значений. См. Этот другой вопрос для получения более подробной информации: Различение отчетов о доставке двух отдельных SMS