2

デバイスの Wi-Fi と Bluetooth の状態を管理するアプリケーションがあります。そのために、状態を含むメッセージを受信し、この状態を強制するかどうかを決定します。次に、状態を適用し、両方の値を保存します。

例: wifi を無効にして強制するメッセージを送信します。次に、wifiをオフにして状態を保存し、これが強制されることを確認します。また、Wifi状態の変化をリッスンするBroadcastReceiverがあり、受信した場合は、最初にwifiが有効になっているかどうか、それで問題ないかどうかを確認します。そうでない場合は、wifi を即座に無効にします。それは魅力のように機能します: public class WifiStateReceiver extends BroadcastReceiver {

public void onReceive(final Context context, final Intent intent) {
    // get new wifi state
    final int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_ENABLING);
    final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

    // if enabling, check if thats okay
    if (wifiState == WifiManager.WIFI_STATE_ENABLING && WIFI_FORCE_DISABLE) {
        wifiManager.setWifiEnabled(false);
    } else

    // if disabling, check if thats okay
    if (wifiState == WifiManager.WIFI_STATE_DISABLING && WIFI_FORCE_ENABLE) {
        wifiManager.setWifiEnabled(true);
    }
}

しかし、Bluetoothでまったく同じことを試しても、元に戻りません...

public void onReceive(final Context context, final Intent intent) {
    // get new wifi state
    final int bluetoothState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.STATE_ON);
    final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    // if enabling, check if thats okay
    if (bluetoothState == BluetoothAdapter.STATE_TURNING_ON && BT_FORCE_DISABLE) {
        mBluetoothAdapter.disable();
    } else

    // if disabling, check if thats okay
    if (bluetoothState == BluetoothAdapter.STATE_TURNING_OFF && BT_FORCE_ENABLE) {
        mBluetoothAdapter.enable();
    }
}

Bluetoothを永久に無効にする方法はありますか?

4

1 に答える 1

1

あと5分で、正しい軌道に乗ることができました...

上記の私のアプローチの問題は、オフ/オンを聞くのを待つことです。BluetoothがオンになっているときにBluetoothを無効にすると、引き続きオンになり、オンのままになるようです。そのため、実際にオンになるまで待ってから無効にする必要があります。つまり、8 文字を削除する必要があり、正常に動作します。

public void onReceive(final Context context, final Intent intent) {
    // get new wifi state
    final int bluetoothState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.STATE_ON);
    final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    // if enabling, check if thats okay
    if (bluetoothState == BluetoothAdapter.STATE_ON && BT_FORCE_DISABLE) {
        mBluetoothAdapter.disable();
    } else

    // if disabling, check if thats okay
    if (bluetoothState == BluetoothAdapter.STATE_OFF && BT_FORCE_ENABLE) {
        mBluetoothAdapter.enable();
    }
}
于 2013-06-20T15:05:11.507 に答える