我正在将 GCM 与 Android 应用程序集成以接收推送通知。一切正常,我能够收到通知。问题是即使应用程序没有运行我也会收到这些通知,但我只需要在应用程序运行时接收它们。
所以我想,如果我在应用程序中以编程方式注册广播接收器,然后取消注册它就onDestroy()
可以完成这项工作。
但是,这不起作用,当尝试获取注册 ID 时,它返回 SERVICE_NOT_AVAILABLE。
这是清单中声明的广播接收器有效,但我一直收到通知:
<receiver android:name=".service.MyBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.testgcm"/>
</intent-filter>
</receiver>
这就是我以编程方式创建它的方式,但收到上述错误:
receiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.google.android.c2dm.intent.RECEIVE");
filter.addCategory("com.testgcm");
registerReceiver(receiver, filter, "com.google.android.c2dm.permission.SEND", null);
你能告诉我我做错了什么吗?或者也许有更好的方法,以便仅在应用程序运行时接收通知?