【发布时间】:2012-02-03 14:54:07
【问题描述】:
在较新版本的 Android (> 3.0) 中有一个屏幕按钮 将显示最近的应用程序列表及其名称和快照。 即使我的应用程序本身受密码保护,此概述也可能 在该快照中显示敏感数据。那么有什么办法可以强制 要显示某些图像(如徽标)而不是让操作系统决定?
【问题讨论】:
-
还有其他机会实现这一目标吗?
在较新版本的 Android (> 3.0) 中有一个屏幕按钮 将显示最近的应用程序列表及其名称和快照。 即使我的应用程序本身受密码保护,此概述也可能 在该快照中显示敏感数据。那么有什么办法可以强制 要显示某些图像(如徽标)而不是让操作系统决定?
【问题讨论】:
目前看来是不可能的。有一个名为onCreateThumbnail 的方法,但我猜系统目前没有使用它,因为它没有被调用。我看到了两种可能的解决方案:
1. 通过将FLAG_SECURE 添加到您的窗口来禁用包含敏感数据的活动的缩略图:getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
2. 要从最近的应用程序中排除您的活动,请将 AndroidManifest.xml 中的活动的 android:excludeFromRecents 属性设置为 true
【讨论】:
Azat 提供的解决方案在 Lollipop 中仍然有效。
请注意,如果您想继续不在最近的列表中查看整个应用的快照,所有实施的活动应该在onCreate() 方法中指定标志getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
之前setContentView();
否则,如果用户浏览它,最近列表中的快照将显示不带标志的第一个活动。
【讨论】:
除了使用 HardwareKeyWatcher 标志之外,还有一种方法可以归档此要求,但由于设备配置和自定义 ROM 碎片化,它不能涵盖所有情况,那么我们必须使用其他方法来满足缺失的情况。
为了简化实现方式,我们为Recent Apps thumbnail hiding 机制构建了一个库,它支持实现自定义布局,以在应用进入Recents Screen 时显示带有应用徽标的空屏幕。
【讨论】: