PackageManager 简单学习

作者: 众少成多积小致巨 | 来源:发表于2019-08-25 15:16 被阅读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 + 包名

    相关文章

      网友评论

        本文标题:PackageManager 简单学习

        本文链接:https://www.haomeiwen.com/subject/ucihectx.html