Как сделать экран пустым в последних приложениях, но разрешить скриншоты - PullRequest
1 голос
/ 08 октября 2019

Я хочу, чтобы на последних экранах приложений отображался чистый белый или черный, но не хочу скрывать его полностью. А также я хочу включить функцию скриншота, не влияя на пользовательский опыт.

Я видел то же самое реализованное в WhatsApp, когда включена блокировка отпечатков пальцев (бета-версия). Кто-нибудь здесь имеет какое-либо представление о том, как это реализовано?

Пожалуйста, не отмечайте его как дубликат, потому что следующие темы не ответили на мой вопрос

Скрыть экран в «Списке последних приложений», но разрешить снимки экрана ,

Вопрос 2 ,

Android: настройка эскиза последних приложений (по умолчанию снимок экрана)

1 Ответ

0 голосов
/ 04 ноября 2019

После большого количества исследований я пришел к следующему выводу

Android 7.0 или старше (<= SDK 25): </strong>

В настоящее время достичь этого невозможнои нет прямых обратных вызовов до того, как система фактически сделает снимок экрана с макетом.

Android 8.0 и новее (> = SDK 26):

В любом случае добавление флажка безопасного макета вокно в onPause() и очистка в onResume() будет работать точно так, как ожидалось.

Чтобы сделать его общим для всех действий, в Application классе зарегистрируйте Application.ActivityLifecycleCallbacks и добавьте следующие строки в определенные переопределенные функции.

fun onActivityResumed(activity: Activity) {
    activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
}

fun onActivityPaused(activity: Activity) {
    activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
}
...