我需要在进入后台时隐藏应用程序的内容,以便敏感信息不会显示在android多任务视图中。
建议使用以下行隐藏屏幕
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
它工作正常。
但是,这也阻止了用户拍摄屏幕快照,这对我来说不是预期的行为。我想让用户根据需要截取该应用的屏幕截图。我不希望Android在多任务视图上显示最新屏幕。
仅当应用在后台运行时,才可以设置FLAG_SECURE吗?
答案 0 :(得分:2)
我们最终找到了最适合我们的解决方案:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (!hasFocus) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
答案 1 :(得分:0)
您可以使用活动生命周期回调。只需在要隐藏在setVisiblity(View.INVISIBLE)
回调和onPause()
回调中的视图上调用setVisiblity(View.VISIBLE)
。