我正在尝试从Android应用程序发送短信。我正在使用PendingIntent,以便可以使用Broadcast Receiver检查它是否已成功发送。由于sendTextMessage调用将针对每个短信执行,因此我需要发送一些“额外的”数据来标识实际的SMS,以便我的广播接收器可以对特定的SMS消息进行一些操作。
这是我的发送代码:
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);
问题在于我的广播接收器无法读取我的额外信息 "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"));
假设意图过滤器能够工作,那么我错在哪里?为什么额外信息没有被发送呢?
任何帮助都将不胜感激。谢谢。
PendingIntent.getBroadcast(baseContext, 99, sentIntent, 0)
) - dule