已发送/已发送短信:您如何识别广播所属的短信?

Mat*_*adt 4 sms android broadcast broadcastreceiver android-intent

在线程中如何监控每个已发送的SMS状态?它描述了如何通过广播监控发送/发送的SMS的状态.

但是,我还没有找到:你如何识别广播所属的短信?据我所知,getResultData()和getResultExtras()似乎没有任何信息.

我的用例是:我一个接一个地循环发送多个短信.我想监控每条消息的传递状态/成功.我如何知道哪个广播属于哪个消息.(延迟每个短信的传送,直到我为每个短信播放广播,这不是一个真正的选择).

Wil*_*ate 5

马蒂亚斯,

参考您链接的问题中的代码.当您创建Intent要由PendingIntent它启动而不是仅仅给它一个动作时,String您可以添加一个额外的,以帮助确定它属于哪个SMS ...

Intent sentIntent = new Intent(SENT);
sentIntent.putExtra("smsNumber", someValue);
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent, FLAG_UPDATE_CURRENT);

Intent deliveredIntent = new Intent(DELIVERED):
deliveredIntent.putExtra("smsNumber", someValue);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, deliveredIntent, FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)

这样你就可以检索到里面的"smsNumber"值 BroadcastReceiver

希望这可以帮助!

由Mathias Lin编辑:重要的是你传递带有挂起意图的标志FLAG_UPDATE_CURRENT,以便附加内容传递并实际到达广播.

  • @William您是否尝试过发送多条短信..我在接收多个短信的广播接收器时遇到问题.我收到所有短信的相同号码..是他们的任何解决方案..很多赞赏 (3认同)
  • 注意:您需要将FLAG_UPDATE_CURRENT传递给挂起的intent,以便传递额外的内容.否则,附加内容不会随广播一起到达. (2认同)