Фильтры списка для установленных пакетов
Я хочу перечислить фильтры намерений активности для пакетов, установленных на моем телефоне. Это просто для обучения, я хочу понять, какие приложения можно запускать с неявными намерениями и как настраиваются фильтры намерений.
Google предоставляет таблицу для приложений, которые они предоставляют в http://developer.android.com/guide/appendix/g-app-intents.html. Я хочу создать аналогичный список для других приложений.
Можно ли использовать PackageManager и копать эту информацию в коде? Кто-нибудь знает о существующем приложении, которое может это сделать? Может ли кто-нибудь указать мне на существующий пример, чтобы сделать то, что я хочу?
Извините, если это дубликат подобных вопросов, таких как Список действий приложения и фильтров намерений? и Android - Как получить список всех доступных фильтров намерений?
Ответы
Ответ 1
AFAIK нет способа перечислить все намерения, которые может получить конкретное приложение. Тем не менее, вы можете получить аналогичную (хотя и не столь обширную) информацию, создав себе сами, используя PackageManager queryIntentActivities, queryIntentservices и queryBroadcastReceivers, чтобы узнать, какие приложения установлены, будет реагировать на это намерение.
Ответ 2
Позвольте мне порекомендовать приложение "ManifestViewer". В нем перечислены намерения для каждого установленного приложения.
https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
Хороший день!
Ответ 3
Используя следующую команду с моим Nexus 6 на Nougat 7.0, я получил список всех намерений:
adb shell pm dump * | grep ' filter' | cut -d ' ' -f 12 | sort | uniq
- Сначала команда открывает оболочку на ваше устройство и делает
PackageManager
дамп каждого пакета.
- Затем перейдите к
grep
, который выбирает только строки со словом "фильтр".
- Затем перейдите к
cut
, который дает текст, найденный на 12-й позиции любых пробелов в этой строке.
- Затем перейдите к
sort
, который сортирует этот список от A до Z.
- Затем перейдите к
uniq
, который очистит дублированные намерения.
YMMV - дайте им попробовать один за раз. Добавьте следующий канал, когда увидите нужные результаты. Не уверен, что предыдущие версии adb
предоставят вам, например, различные числа пробелов для cut
.
И если вам нужны результаты только для одного пакета, такого как Chrome, вы можете использовать:
adb shell pm dump com.android.chrome | grep ' filter' | cut -d ' ' -f 12 | sort | uniq