Получить список приложений, способных обрабатывать отправку, предназначенную для отображения в представлении (не всплывающее диалоговое окно) - PullRequest
14 голосов
/ 31 января 2012

Я пытаюсь получить список всех приложений, установленных на телефоне, способных обрабатывать намерение ОТПРАВИТЬ.В настоящее время я справляюсь с этой ситуацией с помощью Intent.createChooser, но это не то, чего я пытаюсь достичь, так как я хотел бы иметь возможность получить доступ к списку приложений, чтобы отображать их в виде в моей деятельности, аналогичнокак приложение Android Stock Gallery отображает их, а НЕ в диалоговом окне.

Снимок экрана доступен здесь: http://i.stack.imgur.com/0dQmo.jpg

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

19 голосов
/ 31 января 2012

Вызовите queryIntentActivities() на PackageManager, учитывая ACTION_SEND Intent, настроенный так, как вы будете использовать с createChooser() (т.е. имеет тип MIME, Uri и т. Д.). Это даст вам список всех совпадений, которые появятся в списке выбора. Затем вы можете использовать выбор пользователя для запуска фактического действия.

Вот пример проекта , который использует его для создания панели запуска в стиле домашнего экрана.

6 голосов
/ 17 февраля 2015
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);
}
...