繁体   English   中英

取消注册广播接收器

[英]Unregister Broadcast Receiver

我制作了一个即使广播关闭也能正常运行广播接收器的应用。 我的应用程序运行良好,但是当我想注销我的广播接收器时,出现了“接收器未注册”的错误消息。 我这样将其条目写在清单文件中

<receiver  android:name=".PhoneCallReceiver">
            <intent-filter  android:priority="10" >
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>

您不能使用unregisterReceiver()来注销您在清单中注册的内容。 使用PackageManagersetComponentEnabledSetting()指示此<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM