Reputation: 13287
I want to list out the activity intent filters for the packages installed on my phone. This is just for a learning experience, I want to understand what apps can be started with implicit intents and how the intent filters are set up.
Google provides a table for the applications they provide at http://developer.android.com/guide/appendix/g-app-intents.html. I’m looking to create a similar list for other applications.
Can I use the PackageManager and dig this info up in code? Does anyone know of an existing app that can do this? Can anyone point me to an existing example to do what I want?
Sorry if this is a duplicate of similar questions like Listing an application's activity and intent-filters? and Android -- How to get a list of all available intent filters ?
Upvotes: 28
Views: 23380
Reputation: 96576
The easiest way is to download the APK for the app you're interested in (there are loads of totally trustworthy sites for this). Then install apktool
(e.g. brew install apktool
) then
apktool d The.apk
Then check in the AndroidManifest.xml
.
Upvotes: 0
Reputation: 197
adb shell dumpsys package <packagename>
provides the list of activities and the corresponding intents of an application.
Upvotes: 8
Reputation: 858
Using the following command with my Nexus 6 on Nougat 7.0 I got the list of all intents:
adb shell pm dump * | grep ' filter' | cut -d ' ' -f 12 | sort | uniq
PackageManager
dump of every package. grep
which only selects lines with the word 'filter.' cut
which gives the text found at the 12th position of any spaces on that line. sort
which sorts that list from A to Z. uniq
which clears up duplicated Intents.YMMV - give these a try one at a time. Add the next pipe as you see the results you want. Not sure if prior versions of adb
will give you different numbers of spaces for cut
, for example.
And, if you wanted the results for just one package like Chrome you could use:
adb shell pm dump com.android.chrome | grep ' filter' | cut -d ' ' -f 12 | sort | uniq
Upvotes: 11
Reputation: 23787
Let me recommend the app "ManifestViewer". It lists intents for each installed app. https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
Have a nice day !!
Upvotes: 16
Reputation: 1147
AFAIK there is no way to list all intents that a specific application can receive. However, you can get similar (albeit not as expansive) information by creating some intents yourself then using PackageManager's queryIntentActivities, queryIntentservices, and queryBroadcastReceivers to see what applications are installed that will react to that intent.
Upvotes: 16