gpt4 book ai didi

android - Android 中的 ApplicationInfo 适配器仅显示具有启动器 Intent 的应用程序

转载 作者:太空狗 更新时间:2023-10-29 15:53:37 26 4
gpt4 key购买 nike

根据标题,我正在寻找一种仅显示具有启动器 Intent 的应用程序的解决方案。这是我检索应用列表的代码:

public static List<ApplicationInfo> getInstalledApplication(Context context) {
PackageManager packageManager = context.getPackageManager();
List<ApplicationInfo> apps = packageManager.getInstalledApplications(0);
Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
return apps;
}

是否可以添加一个规则来删除所有没有启动器 Intent 的包?谢谢

最佳答案

你可以使用queryIntentActivities();

Intent intent = new Intent()
.setAction(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
List<ApplicationInfo> appInfoList = new ArrayList<>();
for (ResolveInfo info : list) {
ApplicationInfo appInfo = packageManager.getApplicationInfo(info.activityInfo.packageName, PackageManager.GET_META_DATA);
appInfoList.add(appInfo);
}
Collections.sort(appInfoList, new ApplicationInfo.DisplayNameComparator(packageManager));

这应该会为您提供 Launcher Activity 的所有 Intent 。请注意,MATCH_DEFAULT_ONLY 应确保您只会将 Activity 标记为应用程序的默认启动器 Activity 。

编辑:小心 MATCH_DEFAULT_ONLY。它可能会减少您安装的应用数量。

关于android - Android 中的 ApplicationInfo 适配器仅显示具有启动器 Intent 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20744937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com