如何从broadcastReceiver进行GCM注册?

时间:2013-06-25 10:44:02

标签: android broadcastreceiver google-cloud-messaging

我从BroadcastReceiver(引导完成接收器)调用GCMRegistrar.register(context, Constants.GCM_SENDER_ID)但它抛出了ReceiverCallNotAllowedException然后我从broadcastreceiver开始了一个单独的线程,再次从我调用GCMRegistrar.register(context, Constants.GCM_SENDER_ID)的线程中我得到了同样的异常。

然后我从broadcastreceiver和我调用的意向服务

启动了一个IntentService
GCMRegistrar.register(context, Constants.GCM_SENDER_ID)

然后我发送消息给一个死线程的处理程序,因为对于Android 2.3它使用谷歌帐户,我认为它做了一些异步任务。

现在有没有办法从广播接收器成功实现GCMRegistrar.register(context,Constants.GCM_SENDER_ID)

2 个答案:

答案 0 :(得分:2)

GCMRegistrar已弃用。更好的选择是使用GoolgeCloudMessaging类。

要使用此注册,您可以致电

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

答案 1 :(得分:0)

您可以切换到使用新的GoogleCloudMessaging类,正如StinePike建议的那样,但GCMRegistrar.register仍然有效。我想由于某些原因你无法从广播接收器中使用它,但你可以从你的主要活动中调用它(例如)。您是否需要从广播接收器呼叫它?