Приведенный выше фрагмент кода НЕ работает точно, так как в результате в списке программ запуска также есть приложение настройки системы, имя пакета которого - com.android.settings. Этот неожиданный результат происходит как на моем Pixel 2 (Android 8.0), так и на Nexus 6 (Android 7.1).

м приложении я хочу показать список всех доступных лаунчеров (для домашнего экрана) на этом конкретном телефоне Android. Можно ли получить какую-то информацию от ОС Android и как мне сделать этот вызов?

Спасибо!

С наилучшими пожеланиями Даниэль

Ответы на вопрос(3)

так как в результате в списке программ запуска также есть приложение настройки системы, имя пакета которого - com.android.settings. Этот неожиданный результат происходит как на моем Pixel 2 (Android 8.0), так и на Nexus 6 (Android 7.1).

Получите список установленных приложений:

List pkgList = getPackageManager (). GetInstalledPackages (PackageManager.GET_ACTIVITIES);

Выполните итерацию по этому списку и получите активность запуска, используя:

. GetPackageManager () getLaunchIntentForPackage (PackageName);

Подробности читайте здесь:PackageManager, Надеюсь это поможет.

 Alexander Malakhov09 авг. 2013 г., 09:43
IIUC,getLaunchIntentForPackage(..) вернет вам запуск Intent для любого приложения, а не только для Launcher. Например. Приложения «Настройки» и «Медиаплеер» также имеют намерения запуска

который соответствует определенному Намерению. Следующий фрагмент кода распечатать все установленные пусковые установки.

PackageManager pm = getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
for (ResolveInfo resolveInfo : lst) {
    Log.d("Test", "New Launcher Found: " + resolveInfo.activityInfo.packageName);
}
 electrocrat04 июн. 2015 г., 07:02
Также используйтеIntent.ACTION_MAIN заНамеренное действие а такжеIntent.CATEGORY_HOME заКатегория намерений вместо жестко закодированных строк.
 Fede03 июл. 2015 г., 09:28
Спасибо @electrocrat и JacksOnF1re за предложения. Ответ отредактирован.
 JacksOnF1re18 июн. 2015 г., 11:43
проверка isEmpty () здесь бесполезна для каждого
 Alexander Malakhov14 авг. 2013 г., 05:44
1. ты должен проверить(!lst.isEmpty()), видетьвыкл. ссылка. 2. Ваш ответ лучше, чем @ Flavio's, смотрите комментарии

Ваш ответ на вопрос