1.PackageInfo、ResolveInfo

PackageItemInfo:包含了一些信息的基类,

它的直接子类有:

ApplicationInfo、 ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。

   它的间接子类有:

ActivityInfo、ProviderInfo、ServiceInfo。这个类包含的信息对于所有包中项目是平等的。这些Package items是被Package manager所持有的。

这个类提供了属性:label、icon和meta-data。这个类的意图不是被自己调用。它只是简单分享被PackageManager返回的所有items之间的普通定义。比如,它自己并不实现Parcelable接口,但却帮助实现了Parcelable的子类ResolveInfo提供了方便的方法。

ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的AndrodiManifest.xml的<application>标签中收集到的。
  ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的<intent>标签收集到的信息。

 

    PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。
  ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label。

 

   具体应用实例:

   通过调用PackageManager的方法可以得到两种不同的信息:
  PackageManager packageManager = getPackageManager();

  List<ApplicationInfo> applicationList =packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);

它是通过解析AndroidManifest.xml<application>标签中得到的,所以它能得到所有的app。

  Intent intent = new Intent(Intent.ACTION_MAIN, null);


  intent.addCategory(Intent.CATEGORY_LAUNCHER);

//通过Intent查找相关的Activity,更准确
  List<ResolveInfo> resolveList = packageManager.queryIntentActivities(intent, 0);


  //它是通过解析<Intent-filter>标签得到
  <action Android:name=”android.intent.action.MAIN”/>
  <action android:name=”android.intent.category.LAUNCHER”/>

 

    一句话吧:

通过 PackageInfo 获取具体信息方法:

包名获取方法:packageInfo.packageName
    icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)
    应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)
    使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions

通过 ResolveInfo 获取具体信息方法:

包名获取方法:resolve.activityInfo.packageName
    icon获取获取方法:resolve.loadIcon(packageManager)
    应用名称获取方法:resolve.loadLabel(packageManager).toString()

  1. // 获取应用程序下所有Activity
  2. public static ArrayList<String> getActivities(Context ctx) {
  3. ArrayList<String> result = new ArrayList<String>();
  4. Intent intent = new Intent(Intent.ACTION_MAIN, null);
  5. intent.setPackage(ctx.getPackageName());
  6. for (ResolveInfo info : ctx.getPackageManager().queryIntentActivities(intent, 0)) {
  7. result.add(info.activityInfo.name);
  8. }
  9. return result;
  10. }

【转】PackageInfo、ResolveInfo 笔记的更多相关文章

  1. 安卓Launcher之获取手机安装的应用列表,安卓launcher

    Launcher中最主要的就是获取所有应用列表的入口以及图标,一般获取的方法有两种: PackageInfo ResolveInfo 运行获取所有APP的Launcher并且允许进行点击事件,进入到应 ...

  2. 安德鲁斯Launcher得到的装在手机的应用程序列表

    Launcher最基本的是让所有的应用程序和入口图标的列表.有两种方法来获得,一般: PackageInfo ResolveInfo 执行获取全部APP的Launcher而且同意进行点击事件,进入到应 ...

  3. 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

    众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManag ...

  4. Java学习笔记(三)——静态导入,package-info,Fall-through

    [前面的话] 算是真正的放松了好几天时间,没有看任何书,没有任何任务,今天是过完年后的第一天上班时间,我又开始了我的学习之路,感觉还没有老,怎么心态越来越平静了,进入工作状态,就好好努力工作,新的一年 ...

  5. 获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

    众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下: PackageManager packageManager = this.getPackageMana ...

  6. Android群英传笔记——第九章:Android系统信息和安全机制

    Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...

  7. 笔记:Activity的启动过程

    Activity的创建特点 作为四大组件之一的Activity,它不像普通java对像那样,可以new出来,然后去使用.而是调用 startActivity()这样的方式启动.那么Android系统是 ...

  8. JAVA package-info文件【转】

    翻看以前的笔记,看到一个特殊的java文件:pacakge-info.java,虽然有记录,但是不全,就尝试着追踪一下该问题, 分享一下流水账式的结果. 首先,它不能随便被创建.在Eclipse中, ...

  9. Android群英传》读书笔记 (4) 第八章 Activity和Activity调用栈分析 + 第九章 系统信息与安全机制 + 第十章 性能优化

    第八章 Activity和Activity调用栈分析 1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重 ...

随机推荐

  1. Apache Common-pool2对象池分析和应用

    Apache Common-pool2包提供了一个通用的对象池技术的实现.可以很方便的基于它来实现自己的对象池,比如DBCP和Jedis他们的内部对象池的实现就是依赖于Common-pool2. 对象 ...

  2. Codeforces Round #372 (Div. 2) B

    Description ZS the Coder loves to read the dictionary. He thinks that a word is nice if there exists ...

  3. 2016年12月14日 星期三 --出埃及记 Exodus 21:9

    2016年12月14日 星期三 --出埃及记 Exodus 21:9 If he selects her for his son, he must grant her the rights of a ...

  4. 2016年11月29日 星期二 --出埃及记 Exodus 20:20

    2016年11月29日 星期二 --出埃及记 Exodus 20:20 Moses said to the people, "Do not be afraid. God has come t ...

  5. Xcode关闭ARC

    开启了ARC则不能显示调用dealloc/retain/release等手动内存管理操作,所以很多情况下需要关闭. Xcode中有两种途径可以关闭ARC. 1.创建项目时将ARC选项的勾取消掉. 2. ...

  6. bzoj 3118: Orz the MST(单纯形)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3118 题意:给出一个图以及图中指定的n-1条边组成的生成树.每条边权值加1或者减去 ...

  7. [HDOJ5950]Recursive sequence(递推,二项展开,矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:求解递推式f(n)=f(n-1)+2*f(n-2)+n^4. 写了个小东西,不过我的文章里 ...

  8. Intellij IDEA中使用Struts2

    据说struts2中有很多的漏洞, 不过作为学习我也就用了吧, 因为书上面是按着这个讲的呀. 难怪官网上也没有struts2.2.1的版本的下载. 1. 下载struts2.2.1 ga版本 2. 新 ...

  9. Hibernate——基础及XML配置

    1.入门 hibernate是跟数据库打交道的,一般跟数据库打交道的都不简单 原始.底层直接的一些操作.编码量比较大.费时.用框架高效 把原来一点一点实现的东西,现在给个半成品,不用在这上边发时间,把 ...

  10. Singelton单例模式

    单例,相当于一个全局变量,在整个应用程序中保证只有一个类的实例存在. 线程池.数据库连接池.缓存.日志等对象常被设计成单例 实例: 1.懒汉式单例 /** * 懒汉式单例Singelton:是一种创建 ...