【问题标题】:Putting data in the SMS sent intent?将数据放入 SMS 发送意图中?
【发布时间】:2013-09-21 02:37:21
【问题描述】:

我想发送一条短信。如果文本太长,我将其拆分为多条消息。我正在尝试在“已发送”意图中添加一些额外信息,以了解已发送的部分以及所有部分何时完成:

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。似乎相同的意图只是不断被抛出到我的广播接收器。这样做的正确方法是什么?

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    尝试使用FLAG_ONE_SHOT 或取消之前的PendingIntent,然后再尝试创建新的。

    【讨论】:

    • 完全正确;您需要告诉框架不要重用相同的PendingIntent。虽然要发送多条消息,但你不能只使用sendMultipartTextMessage 方法吗?
    • 我在代码中使用了 PendingIntent.FLAG_CANCEL_CURRENT 标志和 sendMultipartTextMessage。
    【解决方案2】:

    您需要向广播添加唯一的请求代码(getBroadcast 方法的第二个参数),以便发送唯一的值。 有关更多详细信息,请参阅其他问题:Differentiating delivery reports of two separate SMS's

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多