安卓 - 如何以编程方式读取清单文件中的意图?

7

我正在尝试编写一段代码,可以在多个应用程序中使用。但是我无法在Java中读取它,请问有没有不需要手动解析清单文件的方法?我想用几行代码获取scheme1和scheme2。

<activity android:name="urlHandlingBlah">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:scheme="scheme1"></data>
        <data android:scheme="scheme2"></data>
    </intent-filter>
</activity>

编辑:我的意思是如何使用PackageManager获取此信息。 我并不关心实际的XML,仅此而已。

意思是如何使用PackageManager获取此信息。 我并不关心实际的XML,仅此而已。


我有个问题。这篇文章解释了如何创建一个Intent,并在代码中引用它,但它没有解释它是如何神奇地得到引用的(https://developer.android.com/guide/topics/connectivity/usb/host.html)。 - Christian Findlay
1个回答

3
不可能,因为一旦你的应用程序被创建,所有内容都会转换成APK,而该清单在运行时不再可读。但是,您可以通过与PackageManager交互来读取这些属性。

而要使用PackageManager来完成这个任务,应该怎么做呢?抱歉,这就是我想通过我的问题得到的答案。 - xtravar
实际上,意图过滤器信息无法从包管理器中获取。然而,从弃用前向锁定到果冻豆版本之前,您可以通过读取.apk文件并解码其清单来获取它,但是从Jellybean开始,其他应用程序的apk可能不再可读。 - Chris Stratton
谢谢您的回复。我只想从我的应用程序中读取它,最好是从所有版本的SDK中读取。这可能吗? - xtravar
2
@xtravar,我还是不明白你为什么需要这些信息来“编写一段可以在多个应用程序中运行的代码”?而且,难道不是你在将这些方案写入这些清单文件吗?你不能只把这些方案作为字符串资源插入到你的清单文件中吗? - Stephan Branczyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接