PackageManager 简单学习
1、简介
PackageManager(下文简称PM)是Android系统为开发者提供的系统服务管理类中的一个,主要用于帮助开发者管理应用程序安装包,
管理应用程序安装、卸载和升级,也可以有效的获取设备上安装的Apk或者未安装的Apk文件的一些数据。
2、信息管理
也就是说它解析AndroidManifest.xml文件信息的;可以查询app的静态信息
可以获取 App 信息类包括:PackageInfo、ApplicationInfo、ActivityInfo/ServiceInfo/ProviderInfo , ResolveInfo 等
一个 PackageInfo 对应一个 ApplicationInfo,而其中又包含若干个 ActivityInfo、ServiceInfo、ProviderInfo。
PackageManager可获取信息涉及类简介
2.1、PackageManager
在 Context 中,使用getPackageManager()来获取PM实例
获取已经安装的应用信息 特定apk信息2.2、PackageInfo
它主要用于存储获取到的 Package 的一些信息,包括:包名(packageName)、版本号(versionCode)、版本名(versionName)。
PackageInfo 常用的字段如下:
applicationInfo 的字段,是可以直接获取到与它相关的 ApplicationInfo 对象的。
packageName:包名。
versionCode:版本号
versionName:版本名。
firstInstallTime:首次安装时间。
lastUpdateTime:最后一次覆盖安装时间。
2.3、 ApplicationInfo
ApplicationInfo 相对于 PackageInfo 用的会比较少一些。它主要用于获取 Apk 定义在 AndroidManifest.xml 中的一些信息。
packageName:包名
targetSdkVersion:目标 SDK 版本。
minSdkVersion:最小支持 SDK 版本,有 Api 限制,最低在 Api Level 24 及以上支持。
sourceDir:App 的 Apk 源文件存放的目录。
dataDir:data 目录的全路径。
metaData:Manifest 中定义的 meta 标签数据。
uid:当前 App 分配的 uid。
2.4、ActivityInfo
ActivityInfo、ServiceInfo、ProviderInfo 这三个是平级的,获取组件相应信息
2.5 ResolveInfo
满足要求的组件信息
满足Intent的组件信息3、安装卸载升级
安装更新
调起系统页面安装
系统页面安装通过反射进行安装
public abstract void installPackage(Uri, IPackageInstallObserver, int,String) (最新的api中已经没有此方法了)
通过执行命令形式进行安装(没有用过,具体怎么写,怎么问度娘),命令如下
pm install -r 路径
广播
监听app安装,更新,卸载
广播监听卸载
调起系统页面卸载
系统页面卸载反射系统方法
public abstract void deletePackage(String packageName, IPackageDeleteObserver observer,@DeleteFlags int flags)
通过执行命令形式进行卸载(没有用过,具体怎么写,问度娘),命令如下
pm uninstall + 包名