После большого количества исследований я пришел к следующему выводу
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)
}