В 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");