我正在尝试从Android应用程序发送短信。我正在使用PendingIntent,这样我就可以使用广播接收器来检查它是否发送正常。由于sendTextMessage调用将针对每条短信进行,因此我需要发送一些“额外”数据来识别实际的短信,以便我的广播接收可以对特定的短信进行一些工作。
下面是我的发送代码:
String SENT = "SMS_SENT";
Intent sentIntent = new Intent(SENT);
sentIntent.putExtra("foo", "BAR");
PendingIntent sentPI = PendingIntent.getBroadcast(baseContext, 0,
sentIntent, 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(baseContext, 0,
new Intent(DELIVERED), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(smsMessage.getNumber(), null, smsMessage.getText(), sentPI, deliveredPI); 问题是,在我的BroadCast接收器中,它似乎无法读取我额外的"foo":
public class SMSSentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}smsID就会变成null。
我的广播接收器是这样注册的:
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));考虑到意图过滤器正在工作,我做错了什么?为什么不把额外的也送来呢?
任何帮助都是非常感谢的。谢谢
发布于 2012-03-15 00:46:53
我怀疑(至少在我身上发生过),您之前在其他地方使用了SMS_SENT intent,因此在那个时候,该intent在额外的部分中没有"foo“。使用相同的意图和请求代码调用PendingIntent.getBroadcast将返回原始挂起的意图。
如果它实际上意味着相同的意图,那么您需要使用PendingIntent.FLAG_UPDATE_CURRENT之类的东西来使用新的额外内容来更新意图。如果它不应该是相同的意图,那么它应该有一个不同的请求代码,这样它就不会与另一个意图相匹配(这就是为什么输入一个唯一的请求代码有效)。
https://stackoverflow.com/questions/9705899
复制相似问题