首先,在实现之前参考了网上的一些静默安装的帖子。
http://blog.csdn.net/lqrensn/article/details/12868809
http://blog.csdn.net/qq272803220/article/details/9102401
http://blog.csdn.net/jiangwei0910410003/article/details/36427963
相信上面的帖子已经说的非常详细了,现在就简单谈一下利用PackageManager是如何实现静默安装的。
由于最近的那个项目能够获取到机器的系统签名,所以可以调用到一些系统功能,即可以利用PackageManage实现静默安装和静默卸载。
我主要是参考的http://blog.csdn.net/qq272803220/article/details/9102401 该文章里面的方法来实现的。
按照里面的方法来实现,基本上是不会有太大的问题,照着这个帖子,静默安装的功能很容易的就实现了,那么现在问题来了,如何实现静默卸载呢?
参照着上面三个帖子中的其中一个,利用aidl接口实现IPackageDeleteObserver这个类,然后再进行封装,进行调用。原文中作者的开发环境是Eclipse,我用的是Android Studio,文件目录会不一样,尝试了一下,因为能力有限,到最后也没有运行成功。于是只好照着类似于静默安装成功运行的方式实现静默卸载功能。
需要文件IPackageObserver.class.class和文件IPackageObserver?stub.class文件,照着作者的方法,先找了android 1.5的源码,下载到了源码以后,并没有发现有这几个文件,可能是下载到的源码不完整吧。然后换了一个思路,想尝试作者所说的第二种方式,进行反编译虚拟机中的framework.jar文件。