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
);
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.
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é).
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 dansSettings.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 pourAndroid:targetSdkVersion
etAndroid:minSdkVersion
est inférieur à 17, votre application ne peut pas modifier les paramètres qui ont été déplacés versSettings.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();
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" >