android使用ResolveInfo过滤出在launch界面显示的应用但是有的应用显示两次怎么解决
时间: 2023-12-10 07:05:48 浏览: 83
如果一个应用在launch界面显示了两次,可能是因为该应用有两个入口点(即两个Activity)被添加到了Android系统的应用列表中。你可以通过以下步骤来解决这个问题:
1. 使用PackageManager的queryIntentActivities()方法获取所有能匹配到指定Intent的Activity列表。
2. 遍历Activity列表,将其中重复的Activity去重。
3. 将去重后的Activity列表转化为应用列表,即一个应用只保留一个入口点。
示例代码如下:
```
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(intent, 0);
List<ApplicationInfo> appList = new ArrayList<>();
Set<String> packageNameSet = new HashSet<>();
for (ResolveInfo resolveInfo : resolveInfoList) {
if (!packageNameSet.contains(resolveInfo.activityInfo.packageName)) {
packageNameSet.add(resolveInfo.activityInfo.packageName);
appList.add(resolveInfo.activityInfo.applicationInfo);
}
}
```
这样就能够过滤出在launch界面显示的应用并去除重复了。
阅读全文