我正在研究系统应用程序,我需要以编程方式了解应用程序能够处理的意图。我已经看到了与此相关的其他问题,但它们似乎都没有答案,但似乎也没有关注系统权限。
PackageManager似乎只提供查询给定intent的活动的方法。我无法找到一种方法来获得给定活动的意图。
例如,如果我有一个具有如此定义的意图过滤器的活动:
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.USER_PRESENT"/>
</intent-filter>
我知道活动类名和包名,我想从包管理器(或任何其他来源)中找出它可以处理的意图(在这种情况下,BOOT_COMPLETED
和{{1} })。
答案 0 :(得分:4)
好问题。我认为不可能找出应用程序可以处理的意图。 http://developer.android.com/reference/android/content/Intent.html列出了一些标准活动操作和广播操作。如果你正在编写你自己的应用程序,它有自己的意图过滤器,那么我不认为其他应用程序会知道你的应用程序可以处理什么意图,因为没有办法发布它们或向世界宣布它们,我相信。
但可能的是,您可以调用特定的intent,如果返回null,那么您肯定知道设备上没有可以处理该特定intent的应用程序。
HTH。
答案 1 :(得分:2)
所以在问这个问题之后,我在这里找到了这个很棒的答案:
Android — How to I get a list of all available intent filters?
所以现在似乎没有办法做我想做的事情。如果它可用,我很想知道。
答案 2 :(得分:0)
您可以尝试使用反编译器,例如“DexDump”(可在GooglePlay上找到),并检索您想要了解的应用程序的“AndroidManifest.xml”。