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

Android 6.0 Разрешение отказа: требуется разрешение android.permission.WRITE_SETTINGS

Как вы можете видеть из моего манифестка ниже, я добавил разрешение "Что мне не хватает?"

<uses-permission-sdk-m android:name="android.permission.WRITE_SETTINGS" />
4b9b3361

Ответ 1

В API 23 или выше пользователь должен авторизовать вручную для этого разрешения, вы можете проверить, позвонив - "Settings.System.canWrite" ниже - это реализация для этого: -

           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (Settings.System.canWrite(context)) {
                    // Do stuff here
                }
                else {
                    Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
                    intent.setData(Uri.parse("package:" + getActivity().getPackageName()));
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            }

Ответ 2

Оказывается, вам нужно использовать другой механизм, который будет предоставлен WRITE_SETTINGS в Android 6. requestPermissions не работает, но CommonsGuy предоставил обходное решение здесь: fooobar.com/questions/99637/...

Ответ 3

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (!Settings.System.canWrite(getApplicationContext())) {
            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName()));
            startActivityForResult(intent, 200);
        }
    }

это работает как шарм.

Ответ 4

Это особый случай: уровень разрешений: подпись,

Если приложение нацелено на уровень API 23 или выше, пользователь приложения должен явно предоставить это разрешение для приложения через экран управления разрешениями.

Приложение запрашивает одобрение пользователя, отправляя намерение с действием ACTION_MANAGE_WRITE_SETTINGS.

Приложение может проверить, имеет ли он это разрешение, вызвав Settings.System.canWrite().

Ответ 5

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            boolean settingsCanWrite = Settings.System.canWrite(this);

            if(!settingsCanWrite) {
                Toast.makeText(this, "Require Permission to Handle Screen Brightness", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                startActivity(intent);
            }
        }

Ответ 6

Это зависит от уровня API и версии сборки Android