天天看点

Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具

install相关的api,在android 1.0时一个也没有。全是后续陆续增加进来的。

我们来看看他们的历史。

Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具

我们发现,除了4.2的是补充4.0的以外,基本上全是逢大版本才有更新:2.0,3.0,4.0,5.0都有新货。

功能:获取安装器的名字。

getter在android 2.0出现了,但是setter要到android 3.0才会出现。

原型:

功能:设置安装器的名字

功能:监听package verification广播。

功能:拓展校验的超时时间

功能:获取packageinstaller

从android 5.0开始,packagemanager提供了基于session的packageinstaller类。

packageinstaller类有4大组件,在后面的函数中都会用到,我们看一下它的结构:

Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具Android应用生死轮回的那些事儿(5) - 武器库(3)- Installer相关工具

要创建session,需要提供一个sessionparam对象。

sessionparams需要一个模式参数:

mode_full_install:新的apk会替换旧的apk的模式。

mode_inherit_existing:新的apk继承旧的apk.

sessionparams有下面的方法可以设属性:

setappicon:设置应用图标

setapplabel:设置应用标签

setapppackagename:设置应用包名

setinstalllocation:是否支持外置设备

setoriginatinguid:设置uid

setoriginatinguri:设置下载的uri

setreferenceuri:设置一个可选的uri

setsize: 这个session中的所用apk的总字节数

前一个sessionparams类都是set方法,这个sessioninfo类都是get方法

getappicon

getapplabel

getapppackagename

getinstallerpackagename

getprocess

getsessionid

isactive

上面两个类,一个都是getter,另一个都是setter,终于轮到session类出场了,它封装都是操作

openread:去读一个apk

openwrite:去写一个apk

fsync:将流写文件

commit:提交

close:关闭这个session

abandon:放弃这个session

getnames:列出都打开了哪些apk

setstagingprogress:设置进度

事件方法:

onactivechanged

onbadgingchanged

oncreated

onfinished

onprogresschanged

创建一个安装的session. 一旦session创建了,以后就可以继续用,重启之后仍然管用。

参数:params,上面刚讲过的sessionparams

createsession创建了之后,还得靠opensession去获取一个session对象去进行操作。

相当于调用session的abandon方法。

注册一个sessioncallback以接受事件

反注册callback

例程:

安装需要一个session,删除就不用了,直接调这个就好。

继续阅读