Разрешение на манифест не работает в Android 6

Он полностью игнорирует:

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

Итак, я получил исключение:

Вызвано: android.view.WindowManager $BadTokenException: не удалось добавить окно [email protected] - разрешение отклонено для этого типа окна

Он даже не указан:

введите описание изображения здесь

Как мне это исправить? Спасибо.

EDIT:

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

Ответ 1

Благодаря сообщению в блоге CommonsWare, я получил некоторые подсказки.

Предполагая, что ваш код находится в Activity или Fragment, проверьте разрешение наложения и сделайте запрос на него, если необходимо:

public static int OVERLAY_PERMISSION_REQ_CODE = 1234;

public void someMethod() {
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
    }
}

Затем перепроверьте разрешение для лучшего UX:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
        if (!Settings.canDrawOverlays(this)) {
            // SYSTEM_ALERT_WINDOW permission not granted...
        }
    }
}