Я создаю приложение для поиска потерянных устройств и хочу иметь возможность включить GPS
программно. Я могу получить разрешение на изменение системных настроек, но когда я пытаюсь включить GPS
, выдается исключение Permission Denied.
Вот мой код: -
if (!Settings.System.canWrite(getBaseContext())) {
startActivityForResult(new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS).setData(Uri.parse(String.format("package:%s", getPackageName()))), request_code);
}
else{
turnGpsOn(getBaseContext());
}
private void turnGpsOn (Context context) {
String beforeEnable = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
String newSet = String.format ("%s,%s",
beforeEnable,
LocationManager.GPS_PROVIDER);
try {
Settings.Secure.putString (context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
newSet);
} catch(Exception e) {}
}
И Я определил разрешения в манифесте следующим образом:
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"
tools:ignore="ProtectedPermissions" />
Мое устройство не рутировано, но я думаю, что это можно сделать, поскольку приложение PowerShade требует для этого разрешения на изменение системных настроек.