您的位置:首页 > 移动开发

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

2016-06-19 09:35 344 查看
PackageInfo:

 

获得方法:

 

PackageManager packageManager = context.getPackageManager();//返回packagemanager实例来找到全部包装信息(来自百度翻译)

List<PackageInfo> allPackageInfos = packageManager

.getInstalledPackages(packageManager.GET_UNINSTALLED_PACKAGES

| 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:

 

获得方法:

 

List<PackageInfo> sysPackageInfos = new ArrayList<PackageInfo>();// 定义系统安装软件信息包

for (PackageInfo packageInfo : allPackageInfos)// 循环取出所有软件信息

{

ApplicationInfo applicationInfo = packageInfo.applicationInfo;// 得到每个软件信息

}

 

特点:

 

ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的< application>标签中收集到的。

ApplicationInfo类 继承自  PackageItemInfo

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

         字段说明:

      flags字段:FLAG_SYSTEM 系统应用程序

                   FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中

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

 

ResolveInfo:

 

获得方法:

 

Intent startIntent = new Intent(Intent.ACTION_MAIN, null);//为本startIntent设置行为为ACTION_MAIN

startIntent.addCategory(Intent.CATEGORY_LAUNCHER);//为本startIntent设置启动方式为LAUNCHER

startIntent.setPackage(packageInfo.getPkgName());//为本startIntent设置包名为packageInfo.getPkgName()

//以startIntent为查询条件查询出需要启动的App的信息

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

List<ResolveInfo> startInfoList = SoftManagementActivity.this

.getPackageManager().queryIntentActivities(startIntent, 0);

//如果startInfoList的长度小于1,则返回

if (startInfoList.size() < 1)

{

return;

}

//startInfoList中一般第一条就是启程App的信息

ResolveInfo startInfo = startInfoList.iterator().next();

特点:

 

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.packageName

icon获取获取方法:resolve.loadIcon(packageManager)

应用名称获取方法:resolve.loadLabel(packageManager).toString()

 

 

ActivityInfo:

 

获得方法:

 

ActivityInfo activityInfo = startInfo.activityInfo;

 

特点:

 

ActivityInfo类  继承自 PackageItemInfo

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

      theme 、launchMode、launchmode等

             常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: