2011-05-07 43 views
4

在線程How to monitor each of Sent SMS status?中描述瞭如何通過廣播來監視發送/傳送的SMS的狀態。已發送/已發送短信:如何識別廣播屬於哪個SMS?

但是,我還沒有找到:你如何識別廣播屬於哪個SMS?根據我的檢查,似乎沒有getResultData()和getResultExtras()中的任何信息。

我的用例是:我一個接一個地在循環中發送多個SMS。我想監視每條消息的交付狀態/成功。我怎麼知道哪個廣播屬於哪個消息。 (延遲每個短信的傳送,直到我爲每個之前的廣播獲得一個廣播不是真正的選擇)。

回答

5

Mathias,

引用您鏈接的問題中的代碼。當您創建IntentPendingIntent推出,而不是僅僅給它一個動作String你可以添加一個額外的給它,以幫助確定其所屬短信...

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); 

這樣,你應該能夠檢索BroadcastReceiver

裏面的「smsNumber」值希望這有助於!

Mathias Lin編輯: 重要的是,您將帶有懸掛意圖的FLAG_UPDATE_CURRENT標誌傳遞出去,以便附加信息傳遞並實際到達廣播。

+0

感謝您的提示,它確實有道理。然而,我試過了,但是當我從intent中讀出相關的額外數據(廣播接收器的onReceive中的第二個參數)時,它是空的。實際上,intent.getExtras()。size()仍然是0.似乎這些額外內容並沒有一直傳遞到未完成的意圖和廣播。 – 2011-05-08 03:19:08

+2

注意:您需要將FLAG_UPDATE_CURRENT傳遞給掛起的意圖,以便傳遞額外信息。否則,演員將不會與廣播一起到達。 – 2011-05-08 05:26:39

+0

@Mathias Lin如果你把FLAG_UPDATE_CURRENT放在以前的意圖中,你將會消失所有額外的東西。如果其中一條消息將被髮送,則只有最後一條短消息被指定爲已發送(即使不是這樣) – Maxim 2011-07-29 11:49:38