Toggle GPS Programmatically Android 4.4

Я знаю. Не делай этого. Мне все равно. Это для корневого приложения.

Приложение установлено на /system/app/ с разрешением 0777

Ранее я использовал:

ContentResolver cr = context.getContentResolver();
Settings.Secure.setLocationProviderEnabled(cr, LocationManager.GPS_PROVIDER, !isGpsOn);

Вот как я это делаю 4.4, поскольку это было устарело:

int value;
if (isGpsOn)value = Settings.Secure.LOCATION_MODE_OFF;
        else value = Settings.Secure.LOCATION_MODE_HIGH_ACCURACY;
Settings.Secure.putInt(cr, Settings.Secure.LOCATION_MODE, value);

И это бесшумно (согласно некоторым отчетам пользователей). Как я могу правильно переключить GPS с Android 4.4 из приложения в системную папку?

Ответ 1

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

Проверьте код GPS TOGGLER

GPS переключает виджет для укороченных устройств Android. Это хорошо подходит даже для эти ПЗУ и ядра, другое программное обеспечение не удалось.

С кодом, просто проверяя:
Надеюсь, вы объявили следующие разрешения в вашем манифесте:

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

Я использовал это на корневом LG Optimus, Android 4.0/4.1. Сообщается, что это может больше не работать, но я не уверен в этом для всех устройств и o.s.:

Включите/выключите его с проверкой флага и этим кодом:

try {  
  Settings.Secure.putString (context.getContentResolver(),  
  Settings.Secure.LOCATION_PROVIDERS_ALLOWED, String.format ("%s,%s",  
  Settings.Secure.getString (context.getContentResolver(),  
  Settings.Secure.LOCATION_PROVIDERS_ALLOWED), LocationManager.GPS_PROVIDER));  
        } catch(Exception e) {}