面试题android日常开发

PackageManager 简单学习

2019-08-25  本文已影响0人  众少成多积小致巨

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 + 包名

上一篇下一篇

猜你喜欢

热点阅读