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 en Settings.System que se ha desplazado a Settings.Global , la operación de escritura fallará en silencio cuando se ejecute en Android 4.2 o superior. Incluso si su valor para android:targetSdkVersion y android:minSdkVersion es inferior a 17, su aplicación no puede modificar la configuración que se ha trasladado a Settings.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" > 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.