2012-09-20 32 views
5

我通過該發送的請求的代碼到警報管理器從警報廣播接收器檢索requestcode

Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, broadcast_intent, PendingIntent.FLAG_UPDATE_CURRENT); 

我想知道的是,在該廣播接收器,如何可以retreive我用於設置requestcode(ROWID)的PendingIntent?

感謝

+0

還沒有答案? Comon – Snake

回答

2

我正在尋找同樣的事情。一種方法是將請求代碼作爲額外的Intent傳遞。

intent.putExtra("requestcode", rowId); 

然而,如果應用程序被殺死也沒有辦法來檢索由意圖傳遞的數據。

因此,您需要將rowId作爲URI傳遞,並使用Intent Filter。

+0

如果應用程序被殺害,警報仍然會被註冊。所以到期後你仍然可以得到不需要的代碼? – Snake

+0

不,報警仍然被註冊,但意圖中包含的額外數據將丟失。我嘗試過這個。 –

+0

啊我看,任何解釋爲什麼是 – Snake

2
Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent,PendingIntent.FLAG_UPDATE_CURRENT 
          ); 

最佳將是參照broadcast_intent通過內getBroadcast() - broadcast_intent.putExtras("REQUESTCODE",rowId) ;的額外內容如下:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent.putExtras("REQUESTCODE",rowId), 
           PendingIntent.FLAG_UPDATE_CURRENT); 
2

的requestCode創建的PendingIntent時並非旨在傳遞到所述接收器使用時,它的目的是作爲一種創建pendingIntent的應用程序可以管理多個pendingIntents的方法。

假設報警應用需要創建多個pendingIntents,並且以後需要取消或修改其中一個。 requestCode用於標識取消/修改哪一個。

要傳遞數據,請使用putExtra,如上所述。請注意,您可能非常希望將RowId用於requestCode和Extra數據。