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

4
我想在最近的应用程序屏幕中使视图变为纯白色或黑色,但不想完全隐藏它。此外,我希望启用截屏功能而不影响用户体验。
我看到WhatsApp在启用指纹锁时(beta apk)实现了相同的功能。这里有人知道它是如何实现的吗?
请不要将其标记为重复,因为以下线程没有回答我的问题: 在“最近应用列表”中隐藏屏幕,但允许截图, 问题2, Android:自定义最近应用缩略图(默认情况下为屏幕截图)
1个回答

0

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

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

目前无法实现此功能,并且在系统实际截取布局之前没有直接的回调。

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)
}

2
对我没用,我在Android 8和Android 10设备上尝试了这种方法。据我所知,只有在调用Activity的setContentView()之前在onCreate()中设置这些标志才能起作用。 - 4gus71n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接