Cómo activar y deshabilitar programaticamente modo de vuelo en Android 4.2?
¿Hay alguna manera de desactivar o activar el modo de vuelo en Android 4.2?
Utilizo este código que sólo funciona para las versiones anteriores de Android:
android.provider.Settings.System.putInt( c.getContentResolver(), android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1 );
Existe una solución simple en dispositivos con raíz .
Para habilitar el Modo Avión se pueden usar los siguientes comandos del shell raíz:
settings put global airplane_mode_on 1 am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
Para desactivar el modo avión, se pueden utilizar estos comandos de shell raíz:
settings put global airplane_mode_on 0 am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
Información tomada desde aquí
Descargo de responsabilidad: Esta información se proporciona "tal cual" sin ningún tipo de garantía.
Esto ya no es posible, excepto por las aplicaciones que están firmadas por la clave de firma del firmware o que están instaladas en la partición del sistema (normalmente por un usuario de dispositivo enraizado).
No se puede, como se indica en la publicación Official Android 4.2 API Documentation
Algunos ajustes de dispositivo definidos por
Settings.System
ahora son de sólo lectura. Si la aplicación intenta escribir cambios en la configuración definida enSettings.System
que se ha desplazado aSettings.Global
, la operación de escritura fallará en silencio cuando se ejecute en Android 4.2 o superior. Incluso si su valor paraandroid:targetSdkVersion
yandroid:minSdkVersion
es inferior a 17, su aplicación no puede modificar la configuración que se ha trasladado aSettings.Global
cuando se ejecuta en Android 4.2 o superior.
Sin embargo, si usted es el desarrollador de SO, puede escribirlo al configurar estos permisos
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Luego, para escribir y leer,
// 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();
Para KitKat, tienes que añadir android:sharedUserId="android.uid.system"
en el archivo de manifiesto.
<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" >