Я хочу отменить регистрацию трансляции, когда переключатель отключен. Я попытался это, но он не работает:BroadcastReceiver unregister error
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);
Вот мой андроид манифеста:
<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); –