android近期任务列表,Android最近任务列表的安全问题

针对Android app在自动扫描证件时可能出现的敏感信息泄露问题,文章提出了三种解决方案。方法1是通过设置android:excludeFromRecents属性阻止activity出现在最近任务列表,但可能影响用户快速启动app。方法2尝试重写onCreateThumbnail方法提供自定义截图,但在不同系统版本间不一致。方法3使用FLAG_SECURE标志防止activity被截屏,该方法能动态控制,允许在用户截屏时临时解除保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到一个需求,由于app中存在自动扫描证件(敏感信息)获取用户真实信息的功能。而且由于在系统会自动获取app的最后一个activity的screen shot,并将其显示于recent task list(最近任务列表)中。因此可能会存在敏感信息泄露的问题。

解决方法1:

在AndroidManifest.xml中对应的会处于activity栈底的activity节点上添加属性

android:excludeFromRecents="true"

此时,所有与该activity处于同一个栈里的同一个app的activity都不会显示在recent task list(最近任务列表)中。

但是此方法带来的问题是:用户不能使用recent task list(最近任务列表)来快速启动我们的app。

解决方法2:

重写Activity中的

public boolean onCreateThumbnail(Bitmap outBitmap, Canvas canvas)

方法,使用该方法将自定义的图片供recent task list(最近任务列表)使用。

但是经过从4.4.4到6.0.1系统的测试,该方法在这两个版本之间系统均不起作用。

解决方法3:

在对应的activity中的onCreate()方法中添加如下代码

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

可以使设置了该flag的activity不能被截屏,包括系统。这就解决了敏感信息出现在recent task list(最近任务列表)中的问题。

注意:这个flag的设置可以是动态的,这意味着当监听到是用户操作按键截取当前屏幕的时候可以解除这个flag,然后等待用户截屏完成后,再恢复这个flag。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值