很多时候,用户需要在我们的应用中输入类似于身份证号、密码、银行卡号等敏感信息,此时如果在后台不怀好意的应用程序对这些敏感页面进行截图,将导致用户的个人信息泄露。
Android 为我们提供了一种可以防止 Activity 被截图的方案来保护用户的隐私。
在 setContentView
前向窗口添加一个 FLAG_SECURE
的 FLAG
。
0x00 代码
1 | public class TestActivity extends Activity { |
0x01 实机测试
无法通过物理组合键截图
无法使用开发工具截图
通过 Shell 强行截图成功 但输出的截图文件除 StatusBar 含有不规则的像素外几乎为全透明
0x02 结语
Android使用 FLAG_SECURE
限制了 SurfaceFlinger 的功能,也用它将图形缓存区标记为不可截图,从而一定程度上的保证了屏幕区域的安全,正常开发的情况下推荐使用。
当然,如果你的用户安装了 Xposed 框架,别费尽心思了。Forget it~ :D