允许使用FLAG_SECURE截屏

A98*_*81K 9 java security android kotlin android-security

使用FLAG_SECURE,不允许截屏。我希望我的应用程序能够捕获屏幕,但是当它进入背景时却可以模糊或隐藏。

你知道有什么办法吗?有可能用FLAG_SECURE做到吗?

我阅读了这个主题(Android:使用方法FLAG_SECURE后无法截图),但是没有人对此有任何有效答案。

使用FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS排除了该应用程序出现在最近的应用程序中,但不确定是否阻止android系统获取并存储状态屏幕截图。

任何建议谢谢

Bio*_*tic 6

确实有可能。

public override fun onPause() {
    window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
    super.onPause()
}

public override fun onResume() {
    super.onResume()
    window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
}
Run Code Online (Sandbox Code Playgroud)

这基本上仅在应用程序被抛到后台时设置安全标志并在进入前台时清除标志,因此您将能够制作屏幕截图。我在一些抽象的活动中使用了这段代码。

  • 你测试过这个吗?如果视图完成渲染,则将忽略clearFlags调用。我已经在 Android 6 到 Android 9 上对此进行了测试。 (2认同)
  • addFlags 调用在 Android 7 上也不适合我 (2认同)
  • 此解决方案不适用于较旧的 Android 版本。我注意到它仅适用于 Android 8 及更高版本。 (2认同)