在Android的开发过程中,有时候可能需要找出设备中所有的指定的某一类应用,如有的可以换皮肤的应用,我们需要在皮肤的商店里找出本地所下载的所有的皮肤,每个皮肤都是一个APP,本篇博客讲讨论如何找出设别中指定的某一类所有的App
要找出指定的App,首先我们要在写这个App的时候给它添加一个识别的标记,这里可以在该App的任意一个Activity中添加一个自定义的Action,如:
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="myAction"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
这里的myAction作为识别的标记,这里还需要添加一个DEFAULT的category
然后在需要找个该类App的地方:
List<String> packageNames = new ArrayList<>();
PackageManager packageManager = context.getPackageManager();
Intent intent = new Intent("myAction").addCategory(Intent.CATEGORY_DEFAULT);
List<ResolveInfo> resolveApps = packageManager.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);
for (ResolveInfo resolveInfo : resolveApps) {
String packageName = resolveInfo.activityInfo.packageName;
packageNames.add(packageName);
}