我想发短信。如果文本太长,我将其拆分为多条消息。我正在尝试将一些额外的信息添加到“已发送”的意图中以了解哪个部分已被发送,以及所有部分何时完成:
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”始终为零,即使对于第二条消息,它也应为1。似乎同样的意图只是不断被扔到我的广播接收器。什么是正确的方法?
由于
答案 0 :(得分:8)
尝试使用FLAG_ONE_SHOT
或以其他方式取消之前的PendingIntent
,然后再尝试创建新的{{1}}。
答案 1 :(得分:0)
您需要向广播添加唯一的请求代码(getBroadcast方法的第二个参数),以便发送唯一值。 有关详细信息,请参阅此其他问题:Differentiating delivery reports of two separate SMS's