PackageInfo ApplicationInfo与ActivityInfo

来源:互联网 发布:r语言mac如何读取文件 编辑:程序博客网 时间:2024/05/22 09:40

PackageManger 

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

常用方法

public abstract PackageManager  getPackageManager()   

功能:获得一个PackageManger对象

public abstract Drawable    getApplicationIcon(StringpackageName)

参数: 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 abstract ResolveInfo  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<ResolveInfoqueryIntentServices(Intent intent, int flags)

参数同上

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


PackageInfo:

获得方法:

PackageManager  packageManager = getPackageManager();PackageInfo packageInfo  =  packageManager.getPackageInfo(getPackageName(),PackageManager.GET_ACTIVITIES);

特点:

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

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

PackageManager  packageManager = getPackageManager();String[] requestedPermissions = packageManager.getPackageInfo(getPackageName(),PackageManager.GET_PERMISSIONS).requestedPermissions;

ApplicationInfo:

获得方法:

PackageManager  packageManager = getPackageManager();ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);

List<PackageInfo> allPackageInfos = packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES);// 定义系统安装软件信息包 for (PackageInfo pInfo : allPackageInfos){ // 循环取出所有软件信息        ApplicationInfo appInfo = pInfo.applicationInfo;// 得到每个软件信息       Log.e("===========>",appInfo.packageName);}

特点:

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

ResolveInfo

获得方法:


// 获得所有启动Activity的信息,类似于Launch界面
public void queryAppInfo() { PackageManager pm = this.getPackageManager(); // 获得PackageManager对象 Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); // 通过查询,获得所有ResolveInfo对象. List<ResolveInfo> resolveInfos = pm.queryIntentActivities(mainIntent, PackageManager.MATCH_DEFAULT_ONLY); // 调用系统排序 , 根据name排序 // 该排序很重要,否则只能显示系统应用,而不能列出第三方应用程序 Collections.sort(resolveInfos,new ResolveInfo.DisplayNameComparator(pm)); for (ResolveInfo reInfo : resolveInfos) { String activityName = reInfo.activityInfo.name; // 获得该应用程序的启动Activity的name String pkgName = reInfo.activityInfo.packageName; // 获得应用程序的包名 String appLabel = (String) reInfo.loadLabel(pm); // 获得应用程序的Label Drawable icon = reInfo.loadIcon(pm); // 获得应用程序图标 // 为应用程序的启动Activity 准备Intent Intent launchIntent = new Intent(); launchIntent.setComponent(new ComponentName(pkgName, activityName)); Log.e("===========>",appLabel + " activityName---" + activityName + " pkgName---" + pkgName); } }
特点:

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

ResolveInfo类
        说明:根据节点来获取其上一层目录的信息,通常是、、节点信息。
       常用字段:
             public  ActivityInfo  activityInfo     获取 ActivityInfo对象,即或节点信息
             public ServiceInfo   serviceInfo     获取 ServiceInfo对象,即节点信息
       常用方法: 
             Drawable loadIcon(PackageManager pm)             获得当前应用程序的图像
             CharSequence loadLabel(PackageManager pm)  获得当前应用程序的label

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

ActivityInfo

获得方法:

ActivityInfo[] actInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES).activities;ActivityInfo actInfo2 = getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);

特点:

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

ActivityInfo、ApplicationInfo、PackageInfo关系图:

转载请注明出处:小石头的博客  http://blog.csdn.net/lu1024188315/article/details/74518599
参考:
http://blog.csdn.net/oyangyujun/article/details/47961147
ActivityInfo示例
http://blog.sina.com.cn/s/blog_9f8d34e70102wnln.html

阅读全文
0 0