Android 防界面劫持方案,无视Android系统版本限制,无需操作栈

本文介绍了一种Android应用防界面劫持的解决方案,通过在Activity的onPause()方法中设置延迟警告提示,并在onResume()中取消,以在用户界面被恶意程序劫持时提供警告。该方案在Android 5.0之后由于权限限制无法直接管理栈顶变化,因此通过Activity生命周期进行监控。同时,文中提到了注意事项,如不能用onStop()替代onPause(),以及加载第三方Activity时的处理。
摘要由CSDN通过智能技术生成

Android 防界面劫持方案

Demo下载地址

http://download.csdn.net/detail/prince_wenzheng/9742068

分析

要想真正做到防劫持,就需要在我们的程序运行时,不允许启动其他应用程序。但是Android为了提高用户的用户体验,对于不同的应用程序之间的切换,基本上是无缝,如果在启动一个Activity时,给它加入一个标志位FLAG_ACTIVITY_NEW_TASK,就能使它置于栈顶并立马呈现给用户。在这种机制下,无法做到真正的防劫持
那么只能使用一种折中的方案,用户使用app的时候,如果被恶意程序劫持跳转到别的界面,这个时候我们就要做出预警提示用户,告诉用户当前界面已经不是我们的app了,有潜在的危险。
这种方案主要有一个问题需要攻克,就是监控是否有程序覆盖了我们的APP,也就是我们需要监控栈顶的变化,在Android5.0之前,可以使用ActivityManager中提供的方法操作栈,但是在Android5.0时,谷歌由于用户隐私的考虑,弱化了这个接口,ActivityManager只能管理自己APP的栈,如果想管理其他APP的栈,需要用户主动授权,而好多手机厂商又对这个权限做了进一步限制,只能为特定的APP授权(如系统捆绑应用)。这样Android5.0之后就无法通过管理栈的方式来进行防劫持。
既然只能对自己的应用进行操作,我们可以从Activity的生命周期做些文章,具体方案往下看

方案

1. 在所有Activity的onPause()方法中,弹出提示用户的警告,延迟1-2秒执行
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值