Today while trying to figure out how to get my wife’s phone to keep WiFi on if she puts her phone into airplane mode, I learned that Android 9 and later disallow automation apps like Automate from controlling WiFi anymore during airplane mode. Android 10 appears to disable control of WiFi completely outside of the settings panel.
I came across an xda-developers post
of how to keep WiFi on entirely when entering airplane mode.
The key is to use
adb and set
I have never looked into
adb before, but I found it surprisingly easy to install,
even for my Gentoo system. Once installed via portage,
and turning on my phone’s USB Debugging in Android’s Developer Options, I simply ran:
$ adb shell # See the current settings F5321:/ $ settings get global airplane_mode_radios cell,wifi,bluetooth,nfc,wimax # Only disable the cell and wimax radios when going into airplane mode F5321:/ $ settings put global airplane_mode_radios cell,wimax
Voila, now turning airplane mode on kept WiFi on!
But I did notice that bluetooth kept turning off, even though
I had excluded it from the
airplane_mode_radios setting. This wasn’t a big
worry, since apps can still enable and disable Bluetooth, and I could
use an automation app to turn it back on, but I was still curious.
For some reason, I ended up rebooting my phone, and all of a sudden,
the bluetooth setting took effect and stayed on when entering airplane mode!
airplane_mode_radios setting was unchanged, but evidently
some of it only took effect if set during phone startup.