天天看点

Android应用生死轮回的那些事儿(7) - PackageManager的不公开APIAndroid应用生死轮回的那些事儿(7) - PackageManager的不公开API

前面,我们花了相当多的篇幅把packagemanager的公开api分门别类,并按版本顺序讲解了发展的过程。

有的同学问了,既然installer相关的api在android 5.0才引入,那么android 4.4及之前的应用安装的程序是怎么写出来的呢?

答案是,还有未公开的内部api啊。

这些api有些在未来的版本中就被转正了。

android 4.4的不公开api大致分为以下几类:

uid相关:uid相关查询没有公开

多用户相关:用户相关的可能不宜公开吧

权限相关:提供比公开版更高的权限

安装和清理相关:核心功能在这一版还没有公开

这个api我们上节讲过,直到android 7.0才公开。

原型:

根据sharedusernanme来获取对应的uid

比起公开的api,可以指定userid.

支持userid的resolveactivity

支持userid的queryintentactivities

支持userid的queryintentservices

支持userid的queryintentcontentproviders

虽然没有叫asuser,但是还是一个增加了userid的版本。

生成权限操作的intent

为某个包授权

回收grantpermission授予的权限

公开的install相关的api要android 5.0才有。所以android 4.4的应用只能使用隐藏的系统api来进行install相关的操作。

安装一个包

安装一个包,同时带校验

不仅带校验,而且还加密。

安装一个已经存在的包

uninstall一个应用

清理应用数据

清理应用缓存

清理存储

清理存储的另一个版本

获取包的大小

多用户版:

虽然不uninstall,但是使应用进入不可用的状态。

设置blocking

读取blocking

原型:

继续阅读