Какой флаг для стандартных приложений в PackageManager.getInstalledApplications(флаг)?

#android #kotlin #android-package-managers

#Android #котлин #android-менеджеры пакетов

Вопрос:

Когда я открываю главное меню Android на своем смартфоне Android, я получаю набор приложений, таких как Youtube, калькулятор, почтовые клиенты и т. Д. Там не видно никаких системных элементов или каких-либо библиотек.

Чтобы получить эти приложения программно, я делаю:

 PackageManager.getInstalledApplications(flag: Int)   

где я получаю список ApplicationInfo , который также содержит намного больше, чем упомянутые установленные стандартные приложения. Какой флаг мне нужно установить, чтобы получать только те же приложения, которые я вижу, когда провожу пальцем вверх по своему смартфону?

Ответ №1:

 val mainIntent = Intent(Intent.ACTION_MAIN, null) mainIntent.addCategory(Intent.CATEGORY_LAUNCHER) val appList = context.getPackageManager().queryIntentActivities( mainIntent, 0)  

Вы можете попробовать это, чтобы получить все пользовательские приложения (и те, которые показывает ваш лаунчер)

Однако вам может потребоваться добавить дополнительные разрешения в свой манифест выше Android 10

Правка: Если вы хотите, чтобы в вашем списке был ApplicationInfo, а не ResolveInfo, вы можете получить его следующим образом:

 appList[your_index].activityInfo.applicationInfo