我有2個接收器和GCMIntentService類在我的應用程序GCM;一個在我的應用程序中,另一個包含在我已添加到我的應用程序中的庫中。當通過GCM接收到消息時;我想知道如何識別接收到的消息的意圖,並讓正確的接收者處理它。有人建議here將結果傳播到下一個接收器,如果它不適用於我的,但我無法做到這一點。如果有人能幫助我,我會很感激。傳播結果到下一個BroadcastReceiver在android
0
A
回答
0
好吧,我已經設法解決它。感謝@Eran的幫助。我使用的是已棄用的GCM API。 GCMBroadcastReceiver的默認實現爲
setResult(Activity.RESULT_OK, null /* data */, null /* extra */);
in onReceive()方法。這將阻止將結果傳遞給下一個接收器。我試圖覆蓋onReceive方法,但它是最終的,不會讓我忽略它。所以,我切換到新的Google雲端通訊API和定義的自定義廣播接收器,並在其的onReceive()梅託德我這樣做:
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getExtras().getString("identifier_tag");
// ignore if message not intended for us
if (message == null) {
setResultCode(Activity.RESULT_OK);
return;
}
if (!message.equals(IDENTIFIER_TAG)) {
setResultCode(Activity.RESULT_OK);
return;
}
ComponentName comp = new ComponentName(context.getPackageName(),
GcmIntentService.class.getName());
// Start the service, keeping the device awake while it is
// launching.
startWakefulService(context, (intent.setComponent(comp)));
// message has been handled; do not propagate
setResult(Activity.RESULT_OK, null, null);
}
我所做的就是檢查是否收到的消息的目的是爲我。如果是的話,我會調用intent服務和setResult(Activity.RESULT_OK,null,null);會阻止消息傳遞給其他接收者。如果消息不是針對我的,我會將它傳遞給下一個接收者。也在清單文件中,我將此接收器的優先級設置得更高,以確保它首先收到消息。
相關問題
- 1. 傳播的foreach()結果在一個表
- 2. Android:一個用於多播的BroadcastReceiver
- 3. 向下傳播GROUPBY聚合的結果
- 4. 在「結束」播放下一個視頻
- 5. Android Adapter跨多個列表視圖的傳播結果
- 6. 傳遞數組結果到一個類
- 7. Javascript - 將先前的查詢結果傳遞到下一個.then()
- 8. Android:使用BroadcastReceiver將數據從一個片段傳遞到另一個片段
- 9. mysql查詢得到下一個結果
- 10. JSON結果到一個下拉列表
- 11. Android:如何使用inner BroadCastReceiver單播一個Activity的意圖?
- 12. Android:在onVideoEnd播放下一個視頻()
- 13. 獲取下一個結果
- 14. 返回下一個結果
- 15. Android BroadCastReceiver音量鍵上下
- 16. CSS - 填充傳播到下一列
- 17. 將前一幀結果作爲輸入傳遞到下一幀
- 18. 斯卡拉播放2.5談到一個動作到結果
- 19. 在BroadcastReceiver中結束Android活動?
- 20. Android BroadcastReceiver無法接收廣播
- 21. 在MySQL中選擇下一個結果
- 22. 棒SQL結果到一個結果
- 23. 結合本地服務從一個BroadcastReceiver
- 24. Android媒體播放器不在播放下一個流
- 25. 從一個BroadcastReceiver
- 26. 如何在Android中結束1個視頻後播放下一個YouTube視頻
- 27. 親和力傳播結果不匹配
- 28. 在Android中播放下一個或上一個視頻
- 29. cURL獲取值並傳遞到下一頁並獲得結果
- 30. Android BroadcastReceiver並啓動一個意圖
我寫了這個建議。什麼不適合你?您可以使用優先級來確定首先調用哪個接收方,並且可以使用發送方ID來知道該消息是否適用於特定的接收方。 – Eran
感謝您的回覆。是的,我可以確定哪一個接收器是它的目的,但我不知道如何將結果傳播給另一個接收器,如果它不適合我。 –
爲了識別我的接收者的消息,我正在發送一個帶有消息的標識符字符串,並在我的GCMIntentService的onMessage()方法中檢查接收到的消息是否包含該字符串。我不確定這是否是正確的方法。你的意思是這樣嗎?如果不是,處理這個問題的正確位置是什麼。我應該定義自定義的GCMBroadcastReceiver嗎? –