我試圖從Android應用程序發送短信。我正在使用PendingIntent,以便我可以使用廣播接收器來檢查它是否發送正常。由於sendTextMessage呼叫將按每條短信完成,因此我需要發送一些「額外」數據來識別實際的短信,以便我的廣播接收可以針對特定的短信做一些工作。Android PendingIntent額外
這是我送的代碼:
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);
的問題是,在我的廣播接收器,它似乎無法閱讀我額外的「富」:
public class SMSSentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
String smsID = intent.getStringExtra("foo");
......
}
}
SMSID剛剛成爲空。
我的廣播接收器被註冊,像這樣:
baseContext.registerReceiver(new SMSSentBroadcastReceiver(), new IntentFilter("SMS_SENT"));
鑑於意圖過濾器正在工作,我究竟做錯了什麼?爲什麼沒有發送額外信息?
任何幫助表示讚賞。謝謝
在您的PendingIntent.getBroadcast中,如果您傳遞了一些唯一的請求代碼,那麼smsID仍然爲空? (例如'PendingIntent.getBroadcast(baseContext,99,sentIntent,0)') – dule 2012-03-14 16:35:04
非常好!這工作。如果你把它作爲答案,我會接受:)但是,爲什麼你需要一個唯一的請求代碼?之前,我只是將它設置爲0,這似乎沒有做到。 – jtnire 2012-03-14 16:38:04