Android系统上实现应用程序的静默安装

在很多情况下,我们需要在Android系统上实现应用程序的静默安装,但很不幸的是,从Android 1.5之后Google就不再提供静默安装的接口了。
    下面介绍一种比较简单的静默安装实现方法。
    原理:
    使用隐藏的系统API——installPackage。该方法在1.5版之后的android SDK中是看不见的,查看源码可以看到它设置了@hide属性,但在实际的运行包framework.jar中是存在的,因此只要能编译通过,安装到系统后是可以正常运行的。
    步骤:
    1. 从模拟器System\framework目录下提取framework.jar
    2. 将framework.jar后缀名改为zip,解压后提取其中的classes.dex文件
    3. 用dex2jar工具将classes.dex转成classes.dex.dex2jar.jar(注意新版本的dex2jar工具无法转换Android2.2的framework,建议使用dex2jar-0.0.7.8-SNAPSHOT,该工具可以从google官方站上下载到)
    4. 将classes.dex.dex2jar.jar改名为classes.dex.dex2jar.zip解压取出android/content/pm/目录下的PackageManager.class,IPackageInstallObserver.class,IPackageDeleteObserver.class及相关的几个class文件备用
    5. 找到android-sdk目录下的android.jar,改名为android.zip(注意改名前先备份一下),解压后将步骤4中取得的class文件覆盖到android对应的目录下,重新压缩成android.zip,并改名为android.jar
    6. 这个时候你的android.jar已经是一个更新过的SDK了,重新打开eclipse工程,你已经可以调用方法:
    void android.content.pm.PackageManager.installPackage(Uri packageURI, IPackageInstallObserverobserver, int flags, String installerPackageName)
    具体调用方法参考F2
    说明:
    1. 由于更改android.jar可能导致重新加载SDK失败,覆盖之前切记备份一下
    2. 实际上该过程可以调用到任何hide属性的API,本文为了影响最小,只覆盖了installPackage相关的class
    3. 下载android源码重新编译SDK也可以实现调用隐藏API,不过比较麻烦

    4. 以上过程在android2.2版本实施通过,其他版本理论上也可以,不过我没试过。

转载于:https://www.cnblogs.com/dongdong230/archive/2013/05/27/4183134.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值