最近做了一个Android项目,要求软件能够自动下载指定的APK文件并自动安装,无须用户操作,即静默安装。在查阅了GOOGLE之后,综合了各位方法之后,找到了一种相对简化的方法,不过此方法只在4.0的Android版本下测试过,其它版本各位可以照此方法尝试一下。
想要做到静默安装,其实就是要有权限执行pm install命令。准备工作其实就两步:
1、获取执行权限
2、执行命令
我们首先介绍第二步,如何执行pm install命令:
关键代码其实就一句:
Runtime.getRuntime().exec(
"pm install xxx.apk"
);
网上也有人提到利用BufferReader读取控制台的输出Success来判断是否安装成功,但我始终没有抓到最后输出的那一句Success,只好用Package install的receiver来处理安装成功后的操作。
再回到如何获取权限的方法,
1、首先,我们要做的就是从Android的系统源码的
/build/target/product/security目录
中,找到两个签名文件: platform.x509.pem和platform.pk8
2、在
/build/tools/signapk目录下找到signapk.jar文件的源码,编译成signapk.jar文件
3、然后在Android项目的manifest.xml文件中,加上INSTALL_PACKAGES的权限。
4、导出apk文件,这里选择签名文件导出。右键项目->"Android Tools"->"Export Signed application Package..."
5、最后就是执行
jarsignapk.jarplatform.
x509
.pemplatform.pk8 签名的apk 目标文件.apk
由此生成的目标文件apk就可以正常安装在Android中,并可以静默安装任意指定的apk文件了。
文中所需的三个文件 下载 :
signapk.jar
platform.x509.pem
platform.pk8