为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2019-09-21 13:59:03
我知道在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中重新注册。希望我能说清楚,谢谢您的帮助。
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您可以使用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) {

    Log.d("receiver is enabled");

} else if(status == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {

    Log.d("receiver is disabled");

}

启用/禁用组件(您的情况下为广播接收器)


//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);


查看完整回答
反对 回复 2019-09-21
  • 2 回答
  • 0 关注
  • 440 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信