2011-01-06 2 views
17

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

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

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

К сожалению, если это дубликат подобных вопросов, как Listing an application's activity and intent-filters? и Android -- How to get a list of all available intent filters ?

ответ

13

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

10

Позвольте мне порекомендовать приложение «ManifestViewer». В нем перечислены намерения для каждого установленного приложения. https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

Желаем вам приятного дня!

+1

Я буду проверять его. thanks - https://market.android.com/details?id=uk.co.ashtonbrsc.android.intentintercept&feature=search_result –

+0

Наконец-то выяснилось это. Еще раз спасибо. –

+0

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

1

Используя следующую команду с моим Nexus 6 на Нуга 7.0 я получил список всех намерений:

adb shell pm dump * | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

  • Первая команда открывает оболочку в устройство и делает PackageManager дамп каждый пакет.
  • Затем труба, которая выводится на grep, который выбирает только строки со словом «фильтр».
  • Затем труба, которая выводится на cut, которая дает текст, найденный на 12-й позиции любых пробелов на этой линии.
  • Затем труба, которая выводится на sort, который сортирует этот список от А до Z.
  • Затем труба, что выход на uniq, который очищает вверх дублированные Намерения.

YMMV - попробуйте по одному за раз. Добавьте следующий канал, когда увидите нужные результаты. Не уверен, что предыдущие версии adb предоставят вам разное количество пробелов для cut, например.

И, если вы хотите, результаты всего за один пакет, как Chrome вы можете использовать:

adb shell pm dump com.android.chrome | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

+0

Хороший ответ, но часть 'filter' не была очевидна.Вам нужно поместить весь путь туда что-то вроде '' com.android.chrome /. "'. – not2qubit

+1

нет опции 'dump' в моей настройке Android 4. 'dumpsys package r' работал вместо меня. – eadmaster

Смежные вопросы