列出已安装包的意向过滤器

Mic*_*evy 22 android android-intent

我想列出手机上安装的软件包的活动意图过滤器.这只是为了学习体验,我想了解哪些应用程序可以使用隐式意图启动,以及如何设置意图过滤器.

Google在http://developer.android.com/guide/appendix/g-app-intents.html上提供了他们提供的应用程序表.我想为其他应用程序创建一个类似的列表.

我可以使用PackageManager并在代码中挖掘这些信息吗?有谁知道现有的应用程序可以做到这一点?有人能指出我现有的例子来做我想要的吗?

很抱歉,如果这是类似问题的重复,例如列出应用程序的活动和intent-filters?Android - 如何获取所有可用的意图过滤器列表?

Gin*_*ray 15

AFAIK无法列出特定应用程序可以接收的所有意图.但是,通过自己创建一些意图,然后使用PackageManager的queryIntentActivities,queryIntentservices和queryBroadcastReceivers来查看将对该意图做出反应的应用程序安装,您可以获得类似(尽管不是扩展)信息.


Som*_*ere 14

让我推荐应用程序"ManifestViewer".它列出了每个已安装应用的意图. https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

祝你今天愉快 !!


小智 7

adb shell dumpsys package <packagename> 提供应用程序的活动列表和相应的意图。


Kri*_*her 5

在牛轧糖7.0上的Nexus 6上使用以下命令,我得到了所有意图的列表:

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

  • 首先,该命令打开一个外壳进入您的设备,并PackageManager转储每个软件包。
  • 然后通过管道将输出输出到管道,该输出grep仅选择带有单词“过滤器”的行。
  • 然后,将输出的管道传递cut给该管道,以给出在该行上任何空格的第12个位置找到的文本。
  • 然后通过管道将输出sort从列表A到Z排序。
  • 然后用管道将输出uniq清除到重复的Intent。

YMMV-一次尝试一下。根据您想要的结果添加下一个管道。例如,不确定的先前版本是否adb会为您提供不同数量的空格cut

而且,如果您只想获得像Chrome这样的软件包的结果,则可以使用:

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

  • 很好的答案,但“过滤器”部分并不明显。您需要将整个路径放在那里,并使用“com.android.chrome/.”之类的内容。 (2认同)