由于显示敏感数据,我主要想在最近的应用列表中清空屏幕。为此,解决方案是使用:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
但这也禁止截图,这是一个问题。
有没有办法在最近的应用列表中显示空白屏幕(或预定义图像),同时仍然允许截图?
答案 0 :(得分:4)
我尝试过这种方法,但它正在发挥作用。为了使屏幕在最近的列表中保持空白并仍然允许屏幕,您可以在onPause()
中设置标记并清除onResume()
中的标记。
@Override
protected void onPause() {
super.onPause();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);
}
@Override
protected void onResume() {
super.onResume()
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
答案 1 :(得分:1)
如果您的Activity显示敏感数据,出于安全原因最好不要让用户制作屏幕截图。如果你甚至担心最近的应用程序屏幕,为什么你不担心屏幕截图同时?我认为,Android OS SecureFlag旨在保护您的数据和截图能力,只是否定了它的目的。
无论如何,如果您想要此功能,您可以尝试将所有敏感数据移动到具有此标志的单独活动。在这种情况下,您将保护您的敏感数据,而在其他应用程序的活动中,您将能够制作屏幕截图。
答案 2 :(得分:1)
在做了一些研究后,我发现这是不可能的。
onCreateThumbnail
似乎是您正在寻找的功能。不幸的是,这个功能似乎没有实现或者至少不起作用。
正如Ped7g所指出的:自2014年以来,onCreateThumbnail“将无法修复”。
它也被标记为已被弃用 Android onCreateThumbnail reference page
此功能很可能无法正常工作。
答案 3 :(得分:0)
我认为你需要的是:
android:excludeFromRecents="true"
将其放入您的<activity>(activity you want to exclude from recents)</activity>