¿Cómo habilitar y deshabilitar programáticamente el modo de vuelo en Android 4.2?
airplane (4)
¿Hay alguna manera de deshabilitar o habilitar el Modo de vuelo en Android 4.2?
Uso este código que funciona solo para versiones anteriores de Android:
android.provider.Settings.System.putInt(
c.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
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 (generalmente por un usuario de dispositivo rooteado).
Existe una solución simple en dispositivos arraigados .
Para habilitar el Modo avión, se pueden usar los siguientes comandos de shell raíz:
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
Para deshabilitar el Modo avión, se pueden usar 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 here
Descargo de responsabilidad: Esta información se proporciona "tal cual" sin ningún tipo de garantía.
No puedes, como está escrito en la documentación oficial de la API de Android 4.2
Algunas configuraciones de dispositivos definidas por
Settings.System
ahora son de solo lectura. Si su aplicación intenta escribir cambios en las configuraciones definidas enSettings.System
que se han movido aSettings.Global
, la operación de escritura fallará silenciosamente cuando se ejecute en Android 4.2 y 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 movido aSettings.Global
cuando se ejecuta en Android 4.2 y superior.
Sin embargo, si usted es el desarrollador del sistema operativo, puede escribirlo cuando establezca estos permisos
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Luego 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, debe agregar 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" >