4

我正在开发一个phonegap,并希望将意图用于android。当我将以下内容添加到 AndroidManifest.xml(在平台/android 中)时,它会像预期的那样工作。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http" />
    <data android:scheme="https" />
    <data android:host="*mysite.com" />
    <data android:host="*mysite.de" />
</intent-filter>

现在我想知道如何不通过 AndroidManifest.xml 而是通过 www/ 下的 config.xml 来配置它,因为据我了解 AndroidManifest.xml 文件可能在构建过程中被覆盖,而 config.xml 是正确的地方对于这样的东西。我尝试了以下(包括各种变体):

<platform name="android">
    <config-file target="AndroidManifest.xml" parent="/manifest/application/activity">
         <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" />
            <data android:scheme="https" />
            <data android:host="*mysite.de" />
            <data android:host="*mysite.com" />
        </intent-filter>
    </config-file>
</platform>

...不幸的是,这将始终导致以下错误:

 [echo] ----------
 [echo] Handling Resources...
 [aapt] Found modified input file
 [aapt] Generating resource IDs...
 [aapt] /home/.../platforms/android/res/xml/config.xml:30: error: Error parsing XML: unbound prefix

任何想法都值得赞赏,我在网上搜索了一个多小时。

我的phonegap版本是3.5.0-0.21.18

4

3 回答 3

2

对于旧版本的 cordova 3,会保留 androidmanifest.xml 更新。当 3.5 版添加了更多带有偏好标签的选项时,我开始感到惊讶。

例如,我曾经通过更新 AndroidManifest.xml 来配置 AndroidLaunchMode,现在他们在 config.xml 中添加了一个允许此配置的选项,这使得在升级 cordova cli 后,我的设置消失了,直到我意识到发生了什么。

目前,cordova prepare android不会删除您的意图过滤器,这意味着在当前版本的 cordova 中,只有当您删除 android 平台或升级到允许此类配置的较新的 cordova android 时,您才会丢失您的更改。

如果你想确保不丢失这个设置,你可以在 post-prepare 中写一个钩子来更新 AndroidManifest.xml。

或者您可以制作一个只会更新 AndroidManifest.xml 的插件(您尝试使用的配置文件语法似乎更像是 plugin.xml 语法)。

于 2014-11-17T16:46:42.363 回答
0

我设法通过在 plugin.xml 文件中为 web 意图插件添加必要的条目来使其工作。

即添加这个:

<intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" />
        <data android:scheme="https" />
        <data android:host="*mysite.de" />
        <data android:host="*mysite.com" />
    </intent-filter>

到这个文件:

/plugins/com-darryncampbell-cordova-plugin-intent/plugin.xml

您应该已经有一个<intent-filter>在安装插件时添加的“”标签。如果您使用的是来自 darryncampbell 的插件(它是 Ionic 目前引用的用于 webintents 的“官方”插件),那么您会看到它<intent-filter>被属性引用android:name="com.darryncampbell.cordova.plugin.intent.ACTION"

将您的新意图过滤器直接添加到该过滤器下方。

这种方法的缺点是,如果您重新安装插件,您可能需要重新输入详细信息。不过,我无法通过在 config.xml 中添加条目来使其工作。

于 2018-07-31T13:57:37.853 回答
0

我面临着完全相同的问题。我不得不使用钩子作为一种解决方法,从来没有设法从config.xml文件本身中得到它。

我记录了我在这个 anwser中所做的事情。我希望这有帮助 !

于 2016-03-30T15:29:22.273 回答