Android 如何停止GCMBaseIntentService,以便不会收到通知?
我几乎在我所有的应用程序中都成功地实现了GCM,因此我可以向我的用户发送通知。他们工作良好,但现在我希望我的用户决定他们是否需要通知。假设将有一个切换按钮,用于确定设备是要注册还是取消注册 我尝试了以下代码注销,但没有成功,我仍然能够收到通知Android 如何停止GCMBaseIntentService,以便不会收到通知?,android,notifications,google-cloud-messaging,android-notifications,Android,Notifications,Google Cloud Messaging,Android Notifications,我几乎在我所有的应用程序中都成功地实现了GCM,因此我可以向我的用户发送通知。他们工作良好,但现在我希望我的用户决定他们是否需要通知。假设将有一个切换按钮,用于确定设备是要注册还是取消注册 我尝试了以下代码注销,但没有成功,我仍然能够收到通知 GCMRegistrar.setRegisteredOnServer(context, false); 及 我可以在服务器上设置false标志,这样就不会在原点发送通知,或者如果用户禁用接收通知的选项,我也不会在onMessage()中侦听通知,但我不希
GCMRegistrar.setRegisteredOnServer(context, false);
及
我可以在服务器上设置false标志,这样就不会在原点发送通知,或者如果用户禁用接收通知的选项,我也不会在onMessage()
中侦听通知,但我不希望这样
我希望取消注册gcmregistar,停止服务(GCMBaseIntentService)。在注册gcm的类中创建一个静态处理程序
static Handler mHandler;
在你的oncreate中
mHandler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
super.handleMessage(msg);
if (msg.what == 0)
{
GCMRegistrar.unregister(context);
}
}
};
现在将消息发送给处理程序,以便像这样注销此gcm
Message msg=MainActivity.mHandler.obtainMessage();
msg.what=0;
MainActivity.mHandler.sendMessage(msg);
这将触发mainActivity的处理程序来注销gcm
尝试一下会对您有所帮助。您是否尝试过注销您的gcm服务?您能告诉我该过程吗?@user3564321还有一件事我想确认GCMBaseIntentService是否真的在后台运行,因为我在application Manager的“运行”部分没有看到我的应用程序,但它仍然显示“强制停止”当我在应用程序管理器的“设置”中单击“下载”时。为什么?谢谢你的快速回复…当我在尝试你的代码时,你能解释一下我问的关于GCM的最后一个问题吗?但是为什么它不把应用程序名称显示在应用程序管理器设置的“运行”部分?不知道更多关于这一点,你应该使用谷歌或者把这个问题放到stackoverflow上。好的,thanx…你的处理程序代码已经解决了。谢谢,我会接受答案的。再来一次。!!!
Message msg=MainActivity.mHandler.obtainMessage();
msg.what=0;
MainActivity.mHandler.sendMessage(msg);