我想列出手机上安装的软件包的活动意图过滤器。这只是为了学习体验,我想了解哪些应用可以使用隐式意图启动,以及如何设置意图过滤器。
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 ?
等类似问题重复答案 0 :(得分:14)
AFAIK无法列出特定应用程序可以接收的所有意图。但是,通过自己创建一些意图,然后使用PackageManager的queryIntentActivities,queryIntentservices和queryBroadcastReceivers来查看将对该意图作出反应的安装应用程序,您可以获得类似(尽管不是扩展)信息。
答案 1 :(得分:13)
让我推荐应用程序“ManifestViewer”。它列出了每个已安装应用的意图。 https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
度过美好的一天!!
答案 2 :(得分:4)
在Nougat 7.0上使用我的Nexus 6使用以下命令,我得到了所有意图的列表:
adb shell pm dump * | grep ' filter' | cut -d ' ' -f 12 | sort | uniq
PackageManager
转储。 grep
,只选择带有“过滤器”一词的行。 cut
,这会给出在该行上任何空格的第12个位置找到的文本。 sort
,将该列表从A排序到Z. uniq
,清除重复的Intents。 YMMV - 一次尝试一次。在看到所需结果时添加下一个管道。例如,不确定adb
的先前版本是否会为cut
提供不同数量的空格。
而且,如果您只想使用Chrome等一个软件包的结果,则可以使用:
adb shell pm dump com.android.chrome | grep ' filter' | cut -d ' ' -f 12 | sort | uniq
答案 3 :(得分:1)
adb shell dumpsys package <packagename>
提供了活动列表和应用程序的相应意图。