Положить данные в отправленное 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

Другие вопросы по тегам