[英]Unregister Broadcast Receiver
我制作了一个即使广播关闭也能正常运行广播接收器的应用。 我的应用程序运行良好,但是当我想注销我的广播接收器时,出现了“接收器未注册”的错误消息。 我这样将其条目写在清单文件中
<receiver android:name=".PhoneCallReceiver">
<intent-filter android:priority="10" >
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
您不能使用unregisterReceiver()
来注销您在清单中注册的内容。 使用PackageManager
和setComponentEnabledSetting()
指示此<receiver>
是否启用-如果未启用,它将不再响应广播。
看到这个答案: 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.