ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的<application>标签中收集到的。
ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的<intent>标签收集到的信息。
PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。
ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label。
下面讲一下这几个类综合在一起的具体应用:
通过调用PackageManager的方法可以得到两种不同的信息:
首先要得到manager:
PackageManager manager = getPackageManager();
方法一:
List<ApplicationInfo> appList = manager.getInstalledApplications(PackageManager.GET.UNINSTALLED_PAKAGES);
它是通过解析AndroidManifest.xml的<application>标签中得到的,所以它能得到所有的app。
方法二:
Intent intent = new Intent(Intent.A CTION_MAIN,null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appList = manager.queryIntentActivities(intent,0);
它是通过解析<Intent-filter>标签得到有
<action android:name=”android.intent.action.MAIN”/>
<action android:name=”android.intent.category.LAUNCHER”/>
这样的app,所以得到的要比第一种方法少(前者比它多那种service、previder等app)。