2013-04-07 15 views
8

Wie bekannt ist, können unter Android 4.2 nur Systemanwendungen den Flugzeugmodus umschalten. Aber ich denke, dass es für gerootete Geräte verfügbar sein muss. Und ich möchte es in meiner Anwendung für gerootete Geräte mit Build.VERSION.SDK_INT> = 17. Wie wird der Flugmodus bei gerooteten Geräten mit Android 4.2 umgeschaltet?Wie wird der Flugmodus unter Android 4.2 und höher mit root aktiviert?

+0

Verwandte (wenn auch nicht unbedingt ein Duplikat): http://stackoverflow.com/questions/13766909/android-how-to- enable-disable-flight-mode-on-android-4-2? lq = 1 –

+0

Ja, diese Frage ist nicht doppelt. – BArtWell

Antwort

13

Es gibt eine neue "Einstellungen" Binär in Android 4.2 Sie können es auch ohne su verwenden, dann benötigt Ihre App die erforderliche Berechtigung, um diese im Manifest Ihrer App deklarierte Einstellung (WRITE_SECURE_SETTINGS für den Flugmodus in 4.2) zu ändern - Dies wird nur Apps gewährt, die auf der Systempartition installiert sind.

aktivieren

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

deaktivieren

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

Für andere Android-Versionen und andere Einstellungen (Flugmodus kann vor 4.2 ohne root aktiviert werden) Sie können SQL injiziert in settings.db

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

"global" durch "system" oder "secure" und "airplane_mode_on" durch ersetzen der Schlüssel Ihres gewünschten Tabelleneintrags. Für einige Einstellungen müssen Sie später bestimmte Broadcasts senden, siehe Beispiel oben für den Flugmodus.

Um Ihre settings.db laufen diese in einem Terminal-App zu erkunden:

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

Ich bin nicht 100% klar auf diese ... Bedeutet dies, dass es keine Möglichkeit gibt, den Flugzeugmodus auf> = 4.2 über eine API legal umzuschalten, ohne zu rooten? – Marius

+0

Ja, das sagen die Originalfragen auch. (Ihre App kann keine System-App ohne root sein oder Sie selbst entwickeln/kompilieren). – user1806772