2013-06-25 108 views
2

我從BroadcastReceiver(Boot complete receiver)調用GCMRegistrar.register(context, Constants.GCM_SENDER_ID),但它拋出ReceiverCallNotAllowedException,然後我從broadcastreceiver和線程I開始分離線程,我又得到了同樣的異常。如何從broadcastReceiver進行GCM註冊?

然後,我從廣播接收器啓動的IntentService和意圖的服務我叫

GCMRegistrar.register(context, Constants.GCM_SENDER_ID) 

然後,我就發短信給一個死線程的處理程序,其自帶因爲Android 2.3的它使用谷歌賬戶,我認爲這做一些異步任務。

現在有沒有辦法從一個BroadcastReceiver

回答

2

GCMRegistrar已被棄用順利實現GCMRegistrar.register(背景下,Constants.GCM_SENDER_ID)。更好的選擇是使用GoolgeCloudMessaging類。

要使用該註冊,您可以撥打

String id = GoogleCloudMessaging.getInstance(context).register(senderId); 
+0

謝謝讓我試試 – Naga

+0

此課程需要Google Play服務版本3.1或更高版本。所以我不想使用這個... – Naga

+0

你可以簡單地將它添加到你的庫中。這是什麼問題? – stinepike

0

你可以切換到使用新GoogleCloudMessaging類,如被StinePike建議,但GCMRegistrar.register仍然有效。我想你出於某種原因不能從廣播接收器使用它,但是你可以從你的主要活動中調用它(例如)。是否有特殊原因需要從廣播接收器中調用它?

+0

是的,我從主要活動調用它,它工作正常,但我想從引導完成broadcastreceiver調用它,在這種情況下它不管用 .. – Naga