Android-如何注销清单中创建的接收者?

我知道在Java代码中使用registerReceiver和unregisterReceiver来处理接收器,但可以说我的清单中包含以下内容:


    <receiver android:name=".headsetHook">

        <intent-filter android:priority="99999999999">

            <action android:name="android.intent.action.ACTION_HEADSET_PLUG" />

        </intent-filter>

    </receiver>

有什么办法可以在Java代码中的某个地方取消注册吗?我可以给它一个id属性或其他东西,然后获取它并注销它吗?我之所以这样问,是因为我希望我的应用仅在第一次执行此操作时才执行某项操作,然后取消注册并稍后在Java中重新注册。


希望我能说清楚,谢谢您的帮助。


HUH函数
浏览 441回答 2
2回答

肥皂起泡泡

您可以使用PackageManager来启用/禁用BroadcastReceiver清单中声明的in。在Broadcast Receiver启用时,将只得到解雇。使用它来创建一个组件ComponentName component = new ComponentName(context, MyReceiver.class);检查组件是启用还是禁用int status = context.getPackageManager().getComponentEnabledSetting(component);if(status == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {&nbsp; &nbsp; Log.d("receiver is enabled");} else if(status == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {&nbsp; &nbsp; Log.d("receiver is disabled");}启用/禁用组件(您的情况下为广播接收器)//Disablecontext.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);//Enablecontext.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android