Как программно включить и отключить режим полета на Android 4.2?
Есть ли способ отключить или включить режим полета на Android 4.2?
Я использую этот код, который работает только для предыдущих версий Android:
android.provider.Settings.System.putInt(
c.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
Ответы
Ответ 1
Существует простейшее обходное решение для корневых устройств.
Чтобы включить режим полета, можно использовать следующие корневые команды:
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
Чтобы отключить режим полета, эти команды корневой оболочки можно использовать:
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
Информация взята из здесь
Отказ от ответственности: эта информация предоставляется "как есть" без какой-либо гарантии.
Ответ 2
Это невозможно, за исключением приложений, подписанных ключом подписи микропрограммного обеспечения или установленных на системном разделе (обычно с помощью пользователя с корневым устройством).
Ответ 3
Вы не можете, как написано в Официальная документация по API Android 4.2
Некоторые настройки устройства, определенные Settings.System
, теперь доступны только для чтения. Если ваше приложение пытается записать изменения в настройки, определенные в Settings.System
, которые переместились на Settings.Global
, запись при работе на Android 4.2 и выше будет бесшумно работать. Даже если ваше значение для android:targetSdkVersion
и android:minSdkVersion
ниже 17, ваше приложение не может изменить настройки, перемещенные в Settings.Global
при запуске Android 4.2 и выше.
Однако, если вы являетесь разработчиком ОС, вы можете записать его при настройке этих разрешений
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Затем, чтобы записать и прочитать,
// 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();
Ответ 4
Для KitKat вам нужно добавить android:sharedUserId="android.uid.system"
в файл манифеста.
<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" >