Подтвердить что ты не робот

Как программно включить и отключить режим полета на Android 4.2?

Есть ли способ отключить или включить режим полета на Android 4.2?

Я использую этот код, который работает только для предыдущих версий Android:

android.provider.Settings.System.putInt(
    c.getContentResolver(),   
    android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
4b9b3361

Ответ 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" >