在很多情况下,我们需要在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(UripackageURI,IPackageInstallObserverobserver, int flags,StringinstallerPackageName)
具体调用方法参考F2
说明:
1. 由于更改android.jar可能导致重新加载SDK失败,覆盖之前切记备份一下
2. 实际上该过程可以调用到任何hide属性的API,本文为了影响最小,只覆盖了installPackage相关的class
3. 下载android源码重新编译SDK也可以实现调用隐藏API,不过比较麻烦

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

更多相关文章

  1. Android(安卓)studio使用与设置
  2. [Android]滑动刷新ListView——android-pulltorefresh使用方法解
  3. Android(安卓)Gradle编译学习日记之一(搭建 Gradle 环境以及编译
  4. android adb push 与 adb install 区别(两种安装APK的方法)
  5. Android(安卓)的Bitmap的修改方法
  6. 深入探讨 Android(安卓)传感器随处监控您的环境
  7. Android(安卓)实现文件的下载
  8. Android文件系统保护——dmverity
  9. ANDROID应用安全防御

随机推荐

  1. Android(安卓)如何用HttpClient 以Post方
  2. Android之WebView优化之路
  3. Android(安卓)调试查看内存使用情况
  4. android 魔塔 游戏
  5. android软键盘的用法总结
  6. JavaEye Android 客户端正式发布
  7. Android之UI学习篇六:ImageView实现图片旋
  8. VLC for Android(安卓): 编译问题 & 解决
  9. Android(安卓)- Mount a Samba share
  10. Android(安卓)配置 OpenCV2.3.1