Не удалось программно включить GPS - PullRequest
0 голосов
/ 17 июня 2020

Я создаю приложение для поиска потерянных устройств и хочу иметь возможность включить 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 требует для этого разрешения на изменение системных настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...