Android: How to get a list of all available intent filters?

If you are off device you can just run the following:

adb shell dumpsys package r

This will give you a list of all the statically registered intent filters.


PackageExplorer lists all intent-filters defined in apps in your device

To answer your question: You create the intent-filter(s) you want to be used to cause your activity to be selected when a program is looking for a service or activity. So each Activity in a Package defines it own list of intent-filters.

I found it useful to have a list of all intent-filters defined by all the applications on a device -- so would know what apps the system would invoke when an intent was processed. I put a free app on Android Market, search for 'Package Explorer' that searches all apps it can find on your device, decodes the AndroidManifest.xml file and displays a list of all intent-filters defined by all apps. The table of all intent-filters can be sorted by Action, Category, Data fields(ie scheme or mimetype), package name or intent-filter type so you can find all Activites on your device that respond to various Actions or Categories.

Package Explorer also collects all uses-permissions fields in the manifest and displays a list of which apps require which permissions. So you can find all packages that use 'SEND_SMS' or something like that. Clicking on the name of a package displays the decoded (uncompressed binary) AndroidManifest.xml for the package.


Expanding on Tom Fraser's answer, the best way is by using dumpsys with a grep and sort.

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

The grep expression makes sure to only catch lines ending in the intent like format of ...blahblah.SOME_INTENT:. It may not catch all, but it's a good start.