【发布时间】:2022-08-22 20:40:28
【问题描述】:
根据要求,当从应用程序轮播以最小化状态查看时,我们必须隐藏应用程序的最后存储状态/快照。现在在应用程序中,我正在使用 JetPack 的生命周期事件 - ON_START 和 ON_STOP 来检测应用程序进入后台还是进入前台的状态。这是供参考的代码 sn-p -
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppBackgrounded() {
//App in background
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE))
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded() {
// App in foreground
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE))
}
所以基本上我在这里尝试做的是 - 我在应用程序进入后台时启用标志安全并在它返回前台时禁用它以允许应用程序截取屏幕截图。与使用安全标志一样,Android 默认情况下会禁止用户截取应用程序屏幕截图。
这与 onPause 和 onResume 完美配合.有什么方法可以让我们使用生命周期事件让它工作吗?谢谢。
-
在我看来,您似乎有
setFlags和clearFlags颠倒了 wrt。你的意图。 -
@laalto 请查看已编辑的最新版本。谢谢。
-
\“这与 onPause 和 onResume 完美配合\”——除非你在很多很多设备模型上测试过,否则我不会指望它。 AFAIK,使用
FLAG_SECURE的唯一可靠方法是在活动的onCreate()中设置一次,然后调用setContentView()或以其他方式填充UI。
标签: android android-lifecycle android-jetpack flag-secure