スイッチが無効のときに、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);
は私のアンドロイドのマニフェストです:
<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); –