如何在最近的应用程序中使屏幕空白但允许屏幕截图

How to make screen blank in recent apps but allow screenshots

我想在最近的应用程序屏幕中将视图设为纯白色或黑色,但不想完全隐藏它。而且我想在不影响用户体验的情况下开启截图功能

我在启用指纹锁时在 whatsapp 中看到了相同的实现(测试版 apk)。这里有人知道这是如何实施的吗?

请不要将其标记为重复,因为以下讨论帖没有回答我的问题

,

,

Android: Customizing recent apps thumbnail (screenshot by default)

经过大量调查,我得出以下结论

Android 7.0 或更早版本(<= SDK 25):

目前无法实现,在系统实际截取布局之前没有直接回调。

Android 8.0 及更新版本(>= SDK 26):

无论如何,将安全布局标志添加到 onPause() 中的 window 并在 onResume() 中将其清除将完全按预期工作。

为了使其对所有活动通用,在 Application class 中注册一个 Application.ActivityLifecycleCallbacks 并在特定的覆盖函数中添加以下行。

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

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