web-dev-qa-db-fra.com

Comment activer et désactiver par programmation le mode Avion sur Android 4.2?

Existe-t-il un moyen de désactiver ou d'activer le mode de vol sur Android 4.2?

J'utilise ce code qui ne fonctionne que pour les versions précédentes d'Android:

Android.provider.Settings.System.putInt(
    c.getContentResolver(),   
    Android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
24
Meroelyth

Il existe une solution de contournement simple sur les périphériques rooted.

Pour activer le mode avion, les commandes de shell racine suivantes peuvent être utilisées:

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

Pour désactiver le mode Avion, ces commandes shell Shell peuvent être utilisées:

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

Informations tirées de ici

Déni de responsabilité: Cette information est fournie "telle quelle" sans aucune forme de garantie.

35
DavisNT

Cela n’est plus possible, sauf pour les applications signées par la clé de signature du microprogramme ou installées sur la partition système (généralement par un utilisateur de périphérique enraciné).

22
CommonsWare

Vous ne pouvez pas, comme indiqué dans Documentation officielle de l'API Android 4.2

Certains paramètres de périphérique définis par Settings.System sont désormais en lecture seule. Si votre application tente d'écrire les modifications apportées aux paramètres définis dans Settings.System qui sont passés à Settings.Global, l'écriture l'opération échouera silencieusement sous Android 4.2 et versions supérieures . Même si votre valeur pour Android:targetSdkVersion et Android:minSdkVersion est inférieur à 17, votre application ne peut pas modifier les paramètres qui ont été déplacés vers Settings.Global lors de l'exécution de Android 4.2 et supérieur.

Toutefois, si vous êtes le développeur du système d'exploitation, vous pouvez l'écrire lorsque vous définissez ces autorisations. 

<uses-permission Android:name="Android.permission.WRITE_SETTINGS" />
<uses-permission Android:name="Android.permission.WRITE_SECURE_SETTINGS" />

Puis écrire et lire,

// To Write
Settings.Global.putString(getContentResolver(), "airplane_mode_on", "1");

// To Read
String result = Settings.Global.getString(getContentResolver(), Settings.Global.AIRPLANE_MODE_ON);
Toast.makeText(this, "result:"+result, Toast.LENGTH_SHORT).show();
11
Sruit A.Suk

Pour KitKat, vous devez ajouter Android:sharedUserId="Android.uid.system" dans le fichier manifeste.

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.airplanesetting"
    Android:versionCode="1"
    Android:versionName="1.0"
    Android:sharedUserId="Android.uid.system" >
0
user3705510