Получите список приложений, способных обрабатывать намерение SEND для отображения в представлении (а не всплывающем диалоговом окне)
Я пытаюсь получить список всех приложений, установленных на телефоне, способных обрабатывать намерение SEND. В настоящее время я занимаюсь этой ситуацией, используя Intent.createChooser, но этого я не пытаюсь достичь, поскольку я хотел бы получить доступ к списку приложений, чтобы отображать их в представлении в моей деятельности, аналогичным как приложение Android Stock Gallery отображает их, а НЕ в диалоговом окне spinner.
Снимок экрана доступен здесь: http://i.stack.imgur.com/0dQmo.jpg
Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Вызвать queryIntentActivities()
на PackageManager
, учитывая ACTION_SEND
Intent
, настроенный так же, как вы бы использовали с createChooser()
(т.е. имеет тип MIME, Uri
и т.д.). Это даст вам список всех совпадений, которые появятся в выборе. Затем вы можете использовать выбор пользователя для запуска фактической активности.
Вот пример проекта, который использует это для создания стартовой панели запуска.
Ответ 2
List<String> packages = new ArrayList<>();
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "test");
sendIntent.setType("text/plain");
List<ResolveInfo> resolveInfoList = getPackageManager()
.queryIntentActivities(sendIntent, 0);
for (ResolveInfo resolveInfo : resolveInfoList) {
packages.add(resolveInfo.activityInfo.packageName);
}