阻止 Android 在多任务视图上显示敏感信息

ale*_*ngn 2 java android

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

建议使用以下行来隐藏屏幕

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Run Code Online (Sandbox Code Playgroud)

效果很好。

但是,这也会阻止用户截取屏幕截图,这对我来说不是预期的行为。我想让用户在需要时截取应用程序的屏幕截图。我不希望 Android 在多任务视图上显示最新的屏幕。

仅当应用程序进入后台时才可以设置 FLAG_SECURE 吗?

ale*_*ngn 5

我们最终得到了这个最适合我们的解决方案:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    if (!hasFocus) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    } else {
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
    }
}
Run Code Online (Sandbox Code Playgroud)