0

Я должен отключитьAIRPLANE MODE и DATE TIME SETTINGS в моем приложении, для этого я использовал эти намерения фильтров но none из них works для меняКак отключить крейсерский режим планшета поддерживает 4.4.2

 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.settings.AIRPLANE_MODE_SETTINGS" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.settings.DATE_SETTINGS" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

Но раньше я успешно отключилSettings, используя ниже intent-filter

 <intent-filter > 
      <action android:name="android.settings.SETTINGS" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
+1

Что значит отключить режим плоскости воздуха? Вы хотите отключить его программно? Вы хотите запретить пользователю отключать его при использовании вашего приложения? –

+0

Могу ли я спросить вас, почему вы хотите отключить режим самолета? Кроме того, почему вы хотите отключить функциональность основной системы? –

+0

@StephaneMathis Нет. Я хочу запретить пользователю включать его при использовании моего приложения. – Sun

ответ

4

Что касается версии 4.2 и выше, вы не можете управлять программным режимом самолета.

Вы можете сделать это, только если у пользователя есть корневое устройство.

Как написано в API DOC:.

«Некоторые параметры устройства, определенные Settings.System являются в настоящее время read-only Если приложение пытается записать изменения в параметры, определенные в Settings.System, которые переместились в Settings.Global, то операция записи будет молча терпеть неудачу при запуске на Android 4.2 и выше. Даже если значение android:targetSdkVersion и android:minSdkVersion ниже 17, ваше приложение не может изменить параметры, которые переместились в Settings.Global при работе на Android 4.2 и выше.»

+0

Есть ли способ включить/выключить режим полета программно в android 4.4.2? – Sun

+1

Как указано выше - Начиная с версии 4.2 и выше - нет способа, если ваше устройство не укоренилось – gilonm

2

TLDR: Не делайте этого.

Подумайте, что произойдет, если пользователь не сможет включить режим полета, хотя, если они хотят/должны.
Важные системные настройки не могут быть изменены из вашего приложения.

Я рекомендую: режим

  1. Проверить самолет отключен или не
  2. Если включено, то подсказки «это приложение не работает на самолетном режиме настройки открытых систем приложения.?» «да/отменить» Диалог
  3. Закройте приложение и/или открытых систем настройки приложения

EDIT: это выглядит следующим образом:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 
private void checkAirplaneMode() { 
    int mode; 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     Log.v(TAG, "work with new api."); 
     mode = Settings.Global.getInt(getActivity().getContentResolver(), 
       Settings.Global.AIRPLANE_MODE_ON, 0); 
    } else { 
     Log.v(TAG, "work with old api."); 
     mode = Settings.System.getInt(getActivity().getContentResolver(), 
       Settings.System.AIRPLANE_MODE_ON, 0); 
    } 
    Log.v(TAG, "airplane mode: " + mode); 

    if(mode == 1 /* airplane mode is on */) { 
     new AlertDialog.Builder(getActivity()).setTitle("Sorry!") 
       .setMessage("This app doesn't work with Airplane mode.\n" 
         + "Please disable Airplane mode.\n") 
       .setPositiveButton("Open Settings", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         startActivity(new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS)); 
         getActivity().finish(); 
        } 
       }) 
       .setNegativeButton("Close app", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         getActivity().finish(); 
        } 
       }) 
       .show(); 
    } 
} 

вот какой-то момент.

  • Проверьте Build.VERSION.SDK_INT, чтобы использовать Settings.Global для новых устройств. Здесь перемещается режим полета.
  • Если режим == 1, устройство находится в самолете.
  • Открыть самолет режим настройки деятельности по
    startActivity(new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS));
+0

Я пробовал это решение: http://www.compiletimeerror.com/2014/01/airplane-mode-onoff-in-android -with.html, и я могу включить/выключить режим полета на Android версии 4.0.4, но получить ошибку при использовании на Android 4.4.2, так что вы можете показать мне способ сделать это? – Sun

+0

@Sun проверить мои изменения. вот какой простой код – ytRino