第三方应用市场检测
现在大部分(Android)手机厂商在自己的系统中都会自带一个(官方)应用市场,出于某些原因考虑,当你从其它渠道下载安装时,系统会在确定安装页面提示你“该应用可能存在风险,建议从官方应用市场下载”。当然,我们可以通过设置去关闭这个功能(默认开启)。以华为系统EMUI4.1为例,可以通过:设置–高级设置–安全–允许未知来源(将对话框中的风险监测的单选框取消选中)。
目的
当然,写这篇文章的目主要是想分享“如何通过代码检查手机是否开启了应用监测”,并对思路做一个简单的梳理。
PS:我们知道,如果想通过代码进行修改系统设置项,需要系统级应用才可进行,如何成为系统级应用这边就不说了。这里主要是考虑应用层的问题,因此我们通过代码,仅能知道开关是否开启,并不能去修改它。
代码
还是以华为系统EMUI4.1为例:
//我们可以通过一下的Api获取系统设置的相关信息,但是对于第三方系统定制的设置,我们无法从官网获取任何有用的资料比如一下的key(app_check_risk),这个就是华为系统中“检测应用”设置开关对应的标识
boolean needCheckRisk = Settings.Global.getInt(getContentResolver(), "app_check_risk", 0) == 1;
思路
从上面的代码来看,关键是要知道开关对应的标识信息(app_check_risk),所以在没有任何文档的支持下,我们只能通过获取源码(反编译)的手段去取到我们想要的信息。
PS : 这里说的获取标识的思路当然也可以用在解决类似第三方系统定制产生的问题。而反编译能力、源码(反编译代码)阅读的能力我想算是必修的。
一:获取系统应用
获取系统应用(apk)包的方式可能比较多,可以root后在借用一些工具可能就可以导出你想要的包。但是这里主要是想介绍如何通过Rom包,去获取想要的apk。关于获取方法参见:如何查看华为EMUI系统APK源码?
二:对获取到的应用进行反编译
拿到包后我们就可以对应用包进行反编译然后阅读代码,方法 : Android反编译技术总结