Как программно включить Wi-Fi при включенном режиме самолета (самолета) в Android? - PullRequest
0 голосов
/ 23 января 2019

Я разрабатываю приложение для поиска Wi-Fi.Всякий раз, когда устройство находится в режиме полета, Wi-Fi отключается автоматически.Я обнаружил, что системные приложения могут включать Wi-Fi, даже если устройство находится в режиме полета.Я тестирую его на Android 9. Как сделать так, чтобы мое приложение могло включать Wi-Fi?

1 Ответ

0 голосов
/ 25 января 2019

В Android 9, вы не можете программно включить Wi-Fi, когда устройство находится в режиме полета или привязывает точку доступа. В этом случае

boolean retVal = mWifiManager.setWifiEnabled (true);

всегда возвращает false, поскольку устройство находится в режиме полета. Но я нашел неэтичный способ сделать это. Не уверен, даже если это хорошо сделать так. У меня работает.

if(myWifiManager.isWifiEnabled()){
        System.out.println("Toggle Wifi Enabled going to disable");
        myWifiManager.setWifiEnabled(false);
    }
    else{
        System.out.println("Wifi Disabled going to enable ");
        if(Settings.System.getInt(context.getContentResolver(),Settings.System.AIRPLANE_MODE_ON, 0) != 0){
             Runtime.getRuntime().exec("adb shell settings put global airplane_mode_radios cell,nfc,wimax,bluetooth");
        }
        myWifiManager.setWifiEnabled(true);
        System.out.println("WI: "+myWifiManager.isWifiEnabled());
    }

Объяснение для команды adb: здесь . Как упомянуто в ссылке, вы можете вернуть вещи к тому, что они были, добавив следующий код, когда режим самолета выключен.

Runtime.getRuntime (). Exec ("настройки оболочки adb удаляют глобальные plane_mode_radios");

...