Разрешение TYPE_APPLICATION_OVERLAY отклонено 2038 на Android N?

Мне нужно нарисовать оверлей системы из службы. Это та часть, которая добавляет это представление в WindowManager:

WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

Это не удалось с исключением отказа в разрешении:

Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@f15e8de -- permission denied for window type 2038

Я пробовал все, что нашел в Интернете, и до сих пор не могу получить это разрешение.

  • У меня есть SYSTEM_ALERT_WINDOW в манифесте.
  • Я должен использовать TYPE_APPLICATION_OVERLAY, а не какой-либо другой TYPE.
  • Я проверил Settings.canDrawOverlays и это правда.
  • Я проверил, что для моего приложения включено разрешение Draw over other apps в настройках приложения.

Я просмотрел все ответы в Android: разрешение запрещено для типа окна 2038 с использованием TYPE_APPLICATION_OVERLAY, но ни одно из них не решает мою проблему.

Любая помощь приветствуется! Спасибо!


person HeyThere    schedule 01.03.2018    source источник
comment
Я сталкиваюсь с этой ошибкой на некоторых устройствах, большинство из них Vivo Android 8.0. У вас уже есть решение для этого? Пожалуйста, дайте мне знать. Спасибо   -  person Huy Duong Tu    schedule 06.11.2018


Ответы (1)


Вы должны выбрать другой тип для Android N:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    flags = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
    flags = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}

WindowManager.LayoutParams(
        WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.MATCH_PARENT,
        flags,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);
person shmakova    schedule 13.03.2018