Как переключить режим полета на Android 4.2 и выше с помощью root?

Как известно, в Android 4.2 только системные приложения могут переключать режим полета. Но я думаю, что он должен быть доступен для рутированных устройств. И я хочу внедрить его в свое приложение для корневых устройств с Build.VERSION.SDK_INT>=17. Как переключить режим полета на рутированных устройствах с Android 4.2?


person BArtWell    schedule 07.04.2013    source источник
comment
Связанный (хотя и не обязательно дубликат): stackoverflow.com/questions/13766909/   -  person John Carter    schedule 07.04.2013
comment
Да, этот вопрос не дублируется.   -  person BArtWell    schedule 07.04.2013


Ответы (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
person joe1806772    schedule 22.04.2013
comment
Я не на 100% уверен в этом... Означает ли это, что нет способа легально переключить режим полета на ›= 4.2 через API без рутирования? - person Marius; 05.11.2013
comment
Да, это то, о чем также говорится в исходных вопросах. (Ваше приложение не может быть системным приложением без рута или самостоятельной разработки/компиляции прошивки). - person joe1806772; 06.12.2013