Адаптер ApplicationInfo в Android для отображения только приложений с намерением запуска

в соответствии с заголовком я ищу решение для отображения только приложения с намерением запуска. Вот мой код для извлечения списка приложений:

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;
}
</applicationinfo></applicationinfo>

Можно ли добавить правило для удаления всех пакетов без намерения запуска? благодаря

2 ответа

Мне удалось решить самостоятельно, используя код кода, предоставленный marcus.ramsden:

public static List<applicationinfo> getInstalledApplication(Context context) {
 PackageManager packageManager = context.getPackageManager();
 List<applicationinfo> apps = packageManager.getInstalledApplications(0);
 List<applicationinfo> appInfoList = new ArrayList();
 for (ApplicationInfo info : apps) {
 if (packageManager.getLaunchIntentForPackage(info.packageName) != null) {
 appInfoList.add(info);
 }
 }
 Collections.sort(appInfoList, new ApplicationInfo.DisplayNameComparator(packageManager));
 return appInfoList;
}
</applicationinfo></applicationinfo></applicationinfo>


Вы можете использовать *********************();

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

Это должно дать вам все намерения с деятельностью Launcher. Обратите внимание, что MATCH_DEFAULT_ONLY должен гарантировать, что вы получите только действия, отмеченные как активность запуска по умолчанию для приложения.

licensed under cc by-sa 3.0 with attribution.