Android的PackageManager的使用

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

  Android系统提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)以及PackageManager管理类。PackageManager管理应用程序包。 它可以获取应用程序各种信息。


  PackageManger 类

      说明: 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得。

      常用方法

        public abstract PackageManager getPackageManager()

               功能:获得一个PackageManger对象

        public abstrac  tDrawable    getApplicationIcon(String packageName)

               参数: packageName 包名

               功能:返回给定包名的图标,否则返回null

        public abstract ApplicationInfo getApplicationInfo(String packageName, int flags)

               参数:packagename 包名

                           flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可

               功能:返回该ApplicationInfo对象

        public abstract List<ApplicationInfo>  getInstalledApplications(int flags)

               参数:flag为一般为GET_UNINSTALLED_PACKAGES,那么此时会返回所有ApplicationInfo。我们可以对ApplicationInfo的flags过滤,得到我们需要的。

               功能:返回给定条件的所有PackageInfo

        public abstract List<PackageInfo>  getInstalledPackages(int flags) 

               参数如上

               功能:返回给定条件的所有PackageInfo

        public abstractResolveInfo  resolveActivity(Intent intent, int flags)

                参数:  intent 查寻条件,Activity所配置的action和category

                        flags: MATCH_DEFAULT_ONLY:Category必须带有CATEGORY_DEFAULT的Activity,才匹配

                          GET_INTENT_FILTERS :匹配Intent条件即可

                          GET_RESOLVED_FILTER    :匹配Intent条件即可

                功能 :返回给定条件的ResolveInfo对象(本质上是Activity) 

        public abstract  List<ResolveInfo>  queryIntentActivities(Intent intent, int flags)

                参数同上

                功能 :返回给定条件的所有ResolveInfo对象(本质上是Activity),集合对象

        public abstract ResolveInfo  resolveService(Intent intent, int flags)

           参数同上

           功能 :返回给定条件的ResolveInfo对象(本质上是Service)

        public abstract List<ResolveInfo> queryIntentServices(Intent intent, int flags)

          参数同上

          功能 :返回给定条件的所有ResolveInfo对象(本质上是Service),集合对象


  在网上收集了一些资料觉得挺不错的,给PackageManager类做一个补充

  PackageItemInfo类

    说明AndroidManifest.xml文件中所有节点的基类,提供了这些节点的基本信息:a label、icon、 meta-data。它并不直接使用,而是由子类继承然后调用相应方法。

     常用字段

            public int icon           获得该资源图片在R文件中的值 (对应于android:icon属性)

            public int labelRes       获得该label在R文件中的值(对应于android:label属性)

            public String name        获得该节点的name值 (对应于android:name属性)

            public String packagename 获得该应用程序的包名 (对应于android:packagename属性)

     常用方法

            Drawable  loadIcon(PackageManager pm)          获得当前应用程序的图像

            CharSequence  loadLabel(PackageManager pm)     获得当前应用程序的label


  ActivityInfo类  继承自 PackageItemInfo

     说明: 获得应用程序中<activity/>或者 <receiver />节点的信息 。我们可以通过它来获取我们设置的任何属性,包括theme 、launchMode、launchmode等中的loadIcon()和loadLabel() 


  ServiceInfo 类

     说明: 同ActivityInfo类似 ,同样继承自 PackageItemInfo,只不过它表示的是<service>节点信息。


  ApplicationInfo类 继承自  PackageItemInfo

     说明:获取一个特定引用程序中<application>节点的信息。

     字段说明

      flags字段: FLAG_SYSTEM           系统应用程序

                 FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中

     常用方法:继承至PackageItemInfo类中的loadIcon()和loadLabel()

 

 ResolveInfo类

     说明:根据<intent>节点来获取其上一层目录的信息,通常是<activity>、<receiver>、<service>节点信息。

     常用字段

          public  ActivityInfo  activityInfo  获取 ActivityInfo对象,即<activity>或<receiver >节点信息

          public ServiceInfo   serviceInfo    获取 ServiceInfo对象,即<activity>节点信息

     常用方法: 

          Drawable loadIcon(PackageManager pm)       获得当前应用程序的图像

          CharSequence loadLabel(PackageManager pm)  获得当前应用程序的label


  PackageInfo类

     说明:手动获取AndroidManifest.xml文件的信息 。

     常用字段

          public String    packageName                  包名

          public ActivityInfo[]     activities          所有<activity>节点信息

          public ApplicationInfo applicationInfo        <application>节点信息,只有一个

          public ActivityInfo[]    receivers            所有<receiver>节点信息,多个

          public ServiceInfo[]    services              所有<service>节点信息 ,多个

Android 11.0 PackageManagerService(一)工作原理和启动流程 1. 概述 PackageManagerServiceAndroid系统核心服务之一,也是Android中最常用的服务之一。它主要负责的工作如下: 1. 解析AndroidManifest.xml文件,解析清单文件中的所有节点信息。 2. 扫描.apk文件,安装系统应用,本地应用等。 3. 管理本地应用,主要有:安装、卸载、应用信息查询等。 2. 核心源码 /frameworks/base/core/java/android/app/ApplicationP... 阅读详情

相关推荐

androidPackageManager简介

PackageManager相关      本类API是对所有基于加载信息的数据结构的封装,包括以下功能:安装,卸载应用查询permission相关信息查询Application相关信息(application,activity,receiver,service,provider及相应属性等)查询已安装应用增加,删除permission清除用户数据、缓存,代码段等/** * PackageManager介绍: * 本类API是对所有基于加载信息的数据结构的封装,包括以下功能: * 安装,

梦中一夜下江南 4万+

Android系统PackageManagerService简介

Android PackageManagerServer 应用安装过程详解,apk安装过程

Android FrameWork——PackageManager框架,整理几个重要的Android知识

大部分情况我们是在Activity中使用getPackageManager方法获取一个ApplicationPackageManager的对象,ApplicationPackageManager实际上是包装了一个IPackageManager.Stub.Proxy的对象由IPackageManager.Stub.Proxy代理执行PackageManager相关操作,IPackageManager.Stub.Proxy实际代理的是PackageManagerService,

2401_87361641的博客 1260

android 判断intent是启动service还是activity

boolean isActivity = m_context.getPackageManager().resolveActivity(testIntent, 0) != null; boolean isService = m_context.getPackageManager().resolveService(testIntent, 0) != null;

zhuawalibai的博客 676

android开发浅谈之PackageManagerService(pkms)

本文基于Android10.0 主要从以下几个方面着手: PKMS启动 PKMS安装APK PKMS卸载APK PKMS启动 这里我简单的将其分为以下几个步骤: 1.SystemServer通过PKMS的main方法启动PKMS 2.PKMS构造方法中初始化Settings 3.扫描各个系统目录下APP相关信息 1.SystemServer通过PKMS的main方法启动PKMS PKMS启动是在SystemServer.startBootstrapServices: mPackageManagerSer

hfreeman2008的专栏 2704

Android PackageManager详解

Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过PackageManager,我们就可以获取应用程序信息。   提到PackageManager,就得提一下AndroidManifest.XML文件了。AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android.

看美丽风晴 9887

Android PackageManager

这两个管理器其实没什么好扯的,看一下源代码基本上就知道了,用途的话除了系统本身用的最多,PackageManager在桌面Launcher APP使用. PackageManager管理器主要负责APP Package的管理,比如安装,卸载,Package的解析,Package包的各种信息,如版本,APP图标,资源,权限等等,android系统在安装APP的时候,会弹出一个提示框,提示框中就会显

刘志保的博客 1222

Android Hook PackageManager

通过前面文章 Android中的Context ,我们可以知道,当我通过Application、Activity或者Service调用getPackageManager()的时候,实质调用的都是ContextImpl类中的getPackageManager方法。 所以我们从ContextImpl类中的getPackageManager方法看起。 ContextImpl.java ...

欢迎关注微信公众号:DroidMind 4887

Android PackageManager 基本使用

PackageManager管理类,它的主要职责是管理应用程序包,通过PackageManager获取的应用程序信息来自AndroidManifest.xml。

特立独行的博客 2954

android PackageManager和PackageInstall

我们每天都在安装和卸载APK(安卓应用程序包文件),或许一天会有好几次,但是你有想过下面问题吗? 什么是Package Manager(包管理器)和Package Installer(程序安装包)?APK文件保存在Android的哪个地方?APK文件安装过程的细节是怎样的?Package Manager(包管理器)是怎样保存数据的?我应该去哪里找Package Manager和Package

u013673422的专栏 3524

Android PackageManager 用法

参考资料:http://blog.csdn.net/qinjuning/article/details/6867806 PackageManger的主要职责是管理应用程序包,通过它可以获取应用程序信息。 AnroidManifest.xml文件节点说明: 一 、相关类介绍 PackageItemInfo类 AndroidManifest.xml文件中所

岁月如歌 9187

android packageManager用法

今天要讲的是PackageManagerAndroid系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过PackageManager,我们就可以获取应用程序信息。   提到PackageManager,就得...

qianshanyany的博客 729

androidPackageManager

进行中。。。

lanqiaowang的博客 222

Android PackageManager 详解

PackageManager是用于获取Android系统中应用程序的信息,查询Application相关信息(application,activity,receiver,service,provider及相应属性等)、查询已安装应用、增加或删除permission、清除用户数据、缓存,代码段等。 AnroidManifest.xml文件节点说明:   AndroidManifes

Raleigh 1168

掌握PackageManager:检索Android安装应用列表

PackageManagerAndroid系统中用于管理应用包的一个核心服务组件,它贯穿于应用的安装、查询、更新和卸载等全过程。它为开发者提供了丰富的API,以编程方式获取系统中已安装应用的信息、应用程序的清单文件和权限声明等。应用安装和卸载:负责应用的安装过程,包括APK文件的解析和应用数据的存储。包查询:通过getPackageInfo、getInstalledPackages等方法查询已安装应用的相关信息。版本管理:管理应用的版本信息,确保系统稳定性和兼容性。

weixin_34640289的博客 1087

Android PackageManager源码浅析以及静默安装实现方式

实现静默安装 ** 通过了解了上面pm的简单工作原理,我们就可以想到静默安装的途径 通过伪造自己的Pm实现开放的api,并且采用自己的IPackageInstallObserver,说道这里你估计会不明白此类用来干嘛的。此观察者是用来检测apk是否安装的的回调,那么卸载同样有自己的观者这,此通过aidl和pms进行通讯,我们可以从源码copy一份到自己的项目下面

Tamic (大白) 9584

Android PackageManager的妙用

str 输出为 :android.content.pm.Signature@b2d95fc0。获取方法是一样的,只是初始化。

weixin_44021334的博客 2328

Android随笔之——PackageManager详解

一、PackageManager的功能:   1、安装,卸载应用  2、查询permission相关信息  3、查询Application相关信息(application,activity,receiver,service,provider及相应属性等)  4、查询已安装应用  5、增加,删除permission  6、清除用户数据、缓存,代码段等        二、Pa

lm4354ml01的博客 1131

android 学习之PackageManager使用

参考:http://www.linuxidc.com/Linux/2012-02/53072.htm   Android系统为我们提供了很多服务管理类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)。PackageManager主要是管理应用程序包,通过它就可以获取应用程序信息。 写了一个Demo,主要实现了获取系统中所有

南北雪树的专栏 592
上一篇: Android仿iPhone圆角边框
下一篇: 编写高效的android代码
PocoyoShamoo
博客等级 码龄16年 202粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值