我制作了一个应用程序,即使应用程序关闭,广播接收器也会定期运行。我的应用程序运行良好,但当我想取消注册我的广播接收器时,它给了我“接收器未注册”的错误。我将清单文件中的条目写为 p>
<receiver android:name=".PhoneCallReceiver">
<intent-filter android:priority="10" >
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
答案 0 :(得分:2)
您无法使用unregisterReceiver()
取消注册您在清单中注册的内容。使用PackageManager
和setComponentEnabledSetting()
表示此<receiver>
是否已启用 - 如果未启用,则不会再响应广播。
答案 1 :(得分:0)
请参阅此答案:https://stackoverflow.com/a/6529365:
ComponentName component = new ComponentName(context, MyReceiver.class);
Check if the Component is enabled or disabled
int status = context.getPackageManager().getComponentEnabledSetting(component);
if(status PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
Log.d("receiver is enabled");
} else if(status PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
Log.d("receiver is disabled");
}
Enable/Disable the component(Broadcast Receiver in your case)
//Disable
context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);
//Enable
context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP);