Android系统为了保证用户的体验,随着SDK版本的增加,对应用的权限控制越来越严;其中对应用静默安装这块体现的很明显。
下面就介绍从Android7.0以下到Android9.0以上,如何一步步的绕开Android系统的限制,实现app的静默安装。
1. 通过shell命令安装
1.1. Android7.0以下
Android7.0以下,用下面的shell命令通过adb调用或者代码中调用,都能正常运行,需要注意的是apk的路径必须是绝对路径
|
1.2. Android7.0到Android9.0以下
应用安装的限制有所加强,通过adb shell安装命令如下,跟Android7.0以下一样
|
但是在代码中调用就不一样,需要用-i参数指定一个系统进程来安装,如下com.android.settings是一个系统应用
|
1.3. Android9.0及以上
经验证,在Android9.0及以上的系统,无法在代码中调用shell命令安装app;
通过阅读Android源码发现,Android9.0在应用安装流程中,首先进行了进程的识别,如果当前是shell进程,直接安装失败。用下面介绍的方法,可以绕过此限制。
2. 通过Android API安装
2.1. Android9.0以下
调用PackageManager的installPackage可实现静默安装,但installPackage是隐藏的,带系统签名的应用可以通过反射的方式调用
|
2.2. Android9.0及以上
Android9.0中PackageManager的installPackage已经被废弃了,可用如下新的接口
|