我从BroadcastReceiver(引导完成接收器)调用GCMRegistrar.register(context, Constants.GCM_SENDER_ID)
但它抛出了ReceiverCallNotAllowedException然后我从broadcastreceiver开始了一个单独的线程,再次从我调用GCMRegistrar.register(context, Constants.GCM_SENDER_ID)
的线程中我得到了同样的异常。
然后我从broadcastreceiver和我调用的意向服务
启动了一个IntentServiceGCMRegistrar.register(context, Constants.GCM_SENDER_ID)
然后我发送消息给一个死线程的处理程序,因为对于Android 2.3它使用谷歌帐户,我认为它做了一些异步任务。
现在有没有办法从广播接收器成功实现GCMRegistrar.register(context,Constants.GCM_SENDER_ID)
答案 0 :(得分:2)
GCMRegistrar已弃用。更好的选择是使用GoolgeCloudMessaging类。
要使用此注册,您可以致电
String id = GoogleCloudMessaging.getInstance(context).register(senderId);
答案 1 :(得分:0)
您可以切换到使用新的GoogleCloudMessaging
类,正如StinePike建议的那样,但GCMRegistrar.register
仍然有效。我想由于某些原因你无法从广播接收器中使用它,但你可以从你的主要活动中调用它(例如)。您是否需要从广播接收器呼叫它?