Получите список всех лаунчеров в Android

#android #launcher #homescreen

#Android #лаунчер #рабочий стол

Вопрос:

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

Спасибо!

С уважением, Дэниел

Ответ №1:

Вы можете запросить список ResolverInfo, которые соответствуют определенному намерению. В следующем фрагменте кода выведите все установленные лаунчеры.

 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);
}
  

Комментарии:

1. 1. вы должны проверить (!lst.isEmpty()) , провожать . ссылка . 2. Ваш ответ лучше, чем у @Flavio, смотрите комментарии

2. Также используйте Intent.ACTION_MAIN for Intent action и Intent.CATEGORY_HOME for Intent category вместо жестко закодированных строк.

3. проверка isEmpty () здесь бесполезна для каждого

4. Спасибо @electrocrat и JacksOnF1re за предложения. Ответ отредактирован.

Ответ №2:

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

Ответ №3:

Попробуйте следующее:

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

    Список pkgList = getPackageManager().Получите установленные пакеты (PackageManager.GET_ACTIVITIES);

  2. Выполните итерацию по этому списку и получите активность лаунчера с помощью:

    getPackageManager().getLaunchIntentForPackage(имя_пакета);

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

Комментарии:

1. IIUC, getLaunchIntentForPackage(..) вернет вам намерение запуска для любого приложения, а не только для лаунчера. Например. приложения «Настройки» и «Медиаплеер» также имеют намерения запуска