防止Android在多任务视图中显示敏感信息

时间:2018-07-24 10:53:27

标签: java android

我需要在进入后台时隐藏应用程序的内容,以便敏感信息不会显示在android多任务视图中。

建议使用以下行隐藏屏幕

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

它工作正常。

但是,这也阻止了用户拍摄屏幕快照,这对我来说不是预期的行为。我想让用户根据需要截取该应用的屏幕截图。我不希望Android在多任务视图上显示最新屏幕。

仅当应用在后台运行时,才可以设置FLAG_SECURE吗?

2 个答案:

答案 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)