Как известно, в Android 4.2 только системные приложения могут переключать режим полета. Но я думаю, что он должен быть доступен для рутированных устройств. И я хочу внедрить его в свое приложение для корневых устройств с Build.VERSION.SDK_INT>=17. Как переключить режим полета на рутированных устройствах с Android 4.2?
Как переключить режим полета на Android 4.2 и выше с помощью root?
Ответы (1)
В Android 4.2 есть новый двоичный файл «настройки». Вы также можете использовать его без su, тогда вашему приложению требуется разрешение, необходимое для изменения этого параметра, объявленного в манифесте вашего приложения (который будет WRITE_SECURE_SETTINGS для режима полета в 4.2 - который предоставляется только к приложениям, установленным в системном разделе).
Активировать
su
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
Деактивировать
su
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
Для других версий андроида и других настроек (режим полета можно активировать без рута до 4.2) можно использовать sql инжекты в settings.db
su
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
insert into global values(null, 'airplane_mode_on', 1);
Замените «global» на «system» или «secure» и «airplane_mode_on» на ключ нужной записи в таблице. Для некоторых настроек вам нужно отправить определенные трансляции после этого, см. пример выше для режима полета.
Чтобы изучить файл settings.db, запустите его в терминальном приложении:
su
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
.tables
select * from global
select * from secure
select * from system