关于PackageInfo、ApplicationInfo、ActivityInfo、ResolveInfo四种信息类的区别之我见

PackageInfo:

获得方法:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. PackageManager packageManager = context.getPackageManager();//返回packagemanager实例来找到全球包装信息(来自百度翻译)  
  2.         List<PackageInfo> allPackageInfos = packageManager  
  3.                 .getInstalledPackages(packageManager.GET_UNINSTALLED_PACKAGES  
  4.                         | packageManager.GET_ACTIVITIES);// 初始化时先要得到当前的所有进程  
特点:

常用字段:
           public String    packageName                   包名
           public ActivityInfo[]     activities                   所有<activity>节点信息
           public ApplicationInfo applicationInfo       <application>节点信息,只有一个
           public ActivityInfo[]    receivers                  所有<receiver>节点信息,多个
           public ServiceInfo[]    services                  所有<service>节点信息 ,多个

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


ApplicationInfo:

获得方法:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. List<PackageInfo> sysPackageInfos = new ArrayList<PackageInfo>();// 定义系统安装软件信息包  
  2.         for (PackageInfo packageInfo : allPackageInfos)// 循环取出所有软件信息  
  3.         {  
  4.             ApplicationInfo applicationInfo = packageInfo.applicationInfo;// 得到每个软件信息  
  5.               
  6.         }  

 
特点: 

ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的< application>标签中收集到的。
ApplicationInfo类 继承自  PackageItemInfo
         说明:获取一个特定引用程序中<application>节点的信息。
         字段说明:
      flags字段: FLAG_SYSTEM 系统应用程序
                   FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中
         常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()

ResolveInfo:

获得方法:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Intent startIntent = new Intent(Intent.ACTION_MAIN, null);//为本startIntent设置行为为ACTION_MAIN  
  2.         startIntent.addCategory(Intent.CATEGORY_LAUNCHER);//为本startIntent设置启动方式为LAUNCHER  
  3.         startIntent.setPackage(packageInfo.getPkgName());//为本startIntent设置包名为packageInfo.getPkgName()  
  4.         //以startIntent为查询条件查询出需要启动的App的信息  
  5.         //功能 :返回给定条件的所有ResolveInfo对象(本质上是Activity),集合对象  
  6.         List<ResolveInfo> startInfoList = SoftManagementActivity.this  
  7.                 .getPackageManager().queryIntentActivities(startIntent, 0);  
  8.         //如果startInfoList的长度小于1,则返回  
  9.         if (startInfoList.size() < 1)  
  10.         {  
  11.             return;  
  12.         }  
  13.         //startInfoList中一般第一条就是启程App的信息  
  14.         ResolveInfo startInfo = startInfoList.iterator().next();  
  15.           
特点:

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

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

通过 ResolveInfo 获取具体信息方法:包名获取方法:resolve.activityInfo.packageNameicon获取获取方法:resolve.loadIcon(packageManager)应用名称获取方法:resolve.loadLabel(packageManager).toString()

ActivityInfo:

获得方法:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ActivityInfo activityInfo = startInfo.activityInfo;  

 
特点: 

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


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值