Подтвердить что ты не робот

Фильтры списка для установленных пакетов

Я хочу перечислить фильтры намерений активности для пакетов, установленных на моем телефоне. Это просто для обучения, я хочу понять, какие приложения можно запускать с неявными намерениями и как настраиваются фильтры намерений.

Google предоставляет таблицу для приложений, которые они предоставляют в http://developer.android.com/guide/appendix/g-app-intents.html. Я хочу создать аналогичный список для других приложений.

Можно ли использовать PackageManager и копать эту информацию в коде? Кто-нибудь знает о существующем приложении, которое может это сделать? Может ли кто-нибудь указать мне на существующий пример, чтобы сделать то, что я хочу?

Извините, если это дубликат подобных вопросов, таких как Список действий приложения и фильтров намерений? и Android - Как получить список всех доступных фильтров намерений?

4b9b3361

Ответ 1

AFAIK нет способа перечислить все намерения, которые может получить конкретное приложение. Тем не менее, вы можете получить аналогичную (хотя и не столь обширную) информацию, создав себе сами, используя PackageManager queryIntentActivities, queryIntentservices и queryBroadcastReceivers, чтобы узнать, какие приложения установлены, будет реагировать на это намерение.

Ответ 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