В Android 17 Toast перестал скрываться на экране блокировки
В AOSP 17 нашли регрессию: текстовые Toast и системные Toast с правом INTERNAL_SYSTEM_WINDOW остаются видны поверх экрана блокировки. Причина — в WindowManagerPolicy.getWindowLayerFromTypeLw ветку TYPE_TOAST изменили с фиксированного layer 7 на 27 для процессов с этим правом, а SystemUI, рендерящий все текстовые Toast с Android 12, такое право имеет.
- В Android 16 TYPE_TOAST всегда получал layer 7, ниже экрана блокировки с layer 17
- В Android 17 ветка возвращает 27 при canAddInternalSystemWindow, и 27 > 17
- Затронуты все текстовые Toast и кастомные Toast системных приложений
- Фикс предлагают в canBeHiddenByKeyguard: отдельный case для TYPE_TOAST с возвратом true
Читать дальше
Софт