Android – Как получить список всех доступных фильтров намерений?

У меня есть поисковые документы для Android, и по какой-то безумной причине я не могу найти список всех доступных фильтров намерений.

Я нахожу фильтр намерений, который бы сделал что-то вроде, уведомив меня через Broadcast Receiver о том, что определенное действие (пример браузера или электронная почта) было запущено или на переднем плане. Может ли кто-нибудь помочь мне в этом.

Solutions Collecting From Web of "Android – Как получить список всех доступных фильтров намерений?"

Вы не найдете этого. Фильтры Intent определяются приложением. Вам нужно будет посмотреть документацию на интересующее вас приложение, которое вас интересует.

PackageExplorer перечисляет все фильтры намерений, определенные в приложениях на вашем устройстве

Чтобы ответить на ваш вопрос: вы создаете фильтр (ы) намерения, который вы хотите использовать, чтобы ваша деятельность была выбрана, когда программа ищет услугу или активность. Таким образом, каждое действие в пакете определяет его собственный список фильтров-намерений.

Мне было полезно иметь список всех фильтров намерений, определенных всеми приложениями на устройстве, – так что знайте, какие приложения будет использовать система при обработке намерений. Я разместил бесплатное приложение на Android Market, ищем «Package Explorer», который ищет все приложения, которые он может найти на вашем устройстве, расшифровывает файл AndroidManifest.xml и отображает список всех фильтров намерений, определенных всеми приложениями. Таблица всех фильтров намерений может быть отсортирована по полям Action, Category, Data (например, схема или тип изображения), имени пакета или типу фильтра намерений, чтобы вы могли найти на своем устройстве все Activites, которые отвечают на различные действия или категории.

Package Explorer также собирает все поля разрешений-применений в манифесте и отображает список приложений, для которых требуются разрешения. Таким образом, вы можете найти все пакеты, которые используют SEND_SMS или что-то в этом роде. При нажатии на имя пакета отображается декодированный (несжатый двоичный) файл AndroidManifest.xml для пакета.

Если вы отключены от устройства, вы можете просто запустить следующее:

Adb shell dumpsys package r

Это даст вам список всех статически зарегистрированных фильтров намерений.

Существует база данных на http://www.openintents.org/en/, которая пытается собирать известные фильтры намерений. Кроме того, в режиме «Дополнение» для Intent перечислены некоторые.

(Частичный ответ) IntentFilters определены в файле AndroidManifest.xml, содержащемся в файле .apk приложения. (В элементе -> -> -> XML, например:

Я не нашел API для поиска всех Intents, определенных во всех файлах .apk, хранящихся на устройстве. Система ищет список всех намерений в: android.content.Context.startActivity (намерение намерения), которое вызывает собственный метод в android.app.ActivityManagerNative.startActivity (), который использует механизм межпроцессного взаимодействия (IPC) (используя сериализацию Информация в объекте «Посылка») для поиска намерений и начала действия. Поэтому я мог найти, как это делается.

Похоже, вы можете получить доступ для чтения к файлам .apk (многие из них хранятся в /system/app/*.apk). Файл .apk является файлом .jar, и в нем доступен файл AndroidManifest.xml, поэтому программа должна иметь возможность читать и анализировать манифест и находить IntentFilters, но API должен быть таким простым.

Существует GET_INTENTS_FILTER – объявленный для использования в будущем для запроса фильтров интенций, см. Также http://code.google.com/p/android/issues/detail?id=3217

Однако приоритет в команде Android небольшой. Кто-нибудь, чтобы отправить патч?

Этот пост является старым, но для тех, кто ищет информацию о манифестах из приложений, установленных на конкретном андроиде, dwld это приложение GOD:

https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

Вы можете проверить список стандартных действий и категорий в sdk / platform / android-x / data / broadcast_actions.txt

Расширяясь на ответе Тома Фрейзера, лучший способ – использовать dumpsys с grep и сортировкой.

 dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort 

Выражение grep позволяет только ловить строки, заканчивающиеся на намерение, подобное формату ...blahblah.SOME_INTENT: Он может не поймать всех, но это хорошее начало.