2013-04-07 15 views
8

Jak wiadomo, w systemie Android 4.2 tylko aplikacje systemowe mogą przełączać tryb samolotowy. Ale myślę, że musi być dostępna dla urządzeń zrootowanych. I chcę wprowadzić go w mojej aplikacji dla zrootowanych urządzeń za pomocą Build.VERSION.SDK_INT> = 17. Jak przełączyć tryb samolotowy na zrootowane urządzenia z systemem Android 4.2?Jak włączyć tryb samolotowy na Androidzie 4.2 i nowszym przy użyciu roota?

+0

powiązanych (choć niekoniecznie duplikat): http://stackoverflow.com/questions/13766909/android-how-to- enable-disable-flight-mode-on-android-4-2? lq = 1 –

+0

Tak, to pytanie nie jest duplikatem. – BArtWell

Odpowiedz

13

Istnieje nowy plik binarny "ustawienia" w systemie Android 4.2 Możesz go również używać bez su, a twoja aplikacja potrzebuje uprawnień wymaganych do zmiany tego ustawienia zadeklarowanego w manifeście aplikacji (co byłoby WRITE_SECURE_SETTINGS dla trybu samolotowego w 4.2 - który jest przyznawany tylko aplikacjom zainstalowanym na partycji systemowej).

Aktywuj

su 
settings put global airplane_mode_on 1 
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true 

Dezaktywacja

su 
settings put global airplane_mode_on 0 
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false 

Dla innych wersjach android i innych ustawień (tryb samolotowy można aktywować bez korzenia przed 4.2) można użyć SQL wstrzykuje w settings.db

su 
sqlite3 /data/data/com.android.providers.settings/databases/settings.db 
insert into global values(null, 'airplane_mode_on', 1); 

Zamień "globalne" na "system" lub "secure" i "airplane_mode_on" na klucz żądanego wpisu w tabeli. W przypadku niektórych ustawień należy później wysłać określone transmisje, patrz przykład powyżej dla trybu samolotowego.

Aby zbadać swoją settings.db uruchomić to w terminalu aplikacji:

su 
sqlite3 /data/data/com.android.providers.settings/databases/settings.db 
.tables 
select * from global 
select * from secure 
select * from system 
+0

Nie jestem w 100% czysty ... Czy to oznacza, że ​​nie ma możliwości legalnego przełączenia trybu samolotu na> = 4.2 za pośrednictwem interfejsu API bez zrootowania? – Marius

+0

Tak, tak też mówią oryginalne pytania. (Twoja aplikacja nie może być aplikacją systemową bez systemu root lub samodzielnie rozwijającą/kompilującą oprogramowanie). – user1806772