我想在开关被禁用时取消注册broadcastreceiver。我已经试过这一点,但它不工作:BroadcastReceiver取消注册错误
Switch BTswitch = (Switch)findViewById(R.id.BTswitch);
BTswitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
registerReceiver(new mReceiver(), new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
}
else {
PackageManager pm = getPackageManager();
ComponentName component = new ComponentName(MainActivity.this, mReceiver.class);
pm.setComponentEnabledSetting(component , PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);
}
}
});
我也曾尝试:
unregisterReceiver(mReceiver);
这里是我的Android清单:
<receiver
android:name=".mReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
这是mReceiver.java文件:
public class mReceiver extends BroadcastReceiver {
private DevicePolicyManager mDevicePolicyManager;
private ComponentName mComponentName;
@Override
public void onReceive(Context context, Intent intent) {
如何取消注册。此代码不取消注册广告。它始终在运行。
你试图使用[unregisterReceiver(https://developer.android.com/reference/android/content/Context.html#unregisterReceiver(android.content.BroadcastReceiver))来注销? – k3b
是的,我试过了:unregisterReceiver(mReceiver); –