我正在开发一个phonegap,并希望使用Intent for android。当我将以下内容添加到AndroidManifest.xml(在platforms / 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
感谢任何想法,我在网上搜索了一个多小时。
我的手机版本是3.5.0-0.21.18
答案 0 :(得分:2)
对于旧版本的cordova 3,保留了androidmanifest.xml更新。当他们使用首选项标签添加更多选项时,我开始对版本3.5感到意外。
例如,我曾经通过更新AndroidManifest.xml来配置AndroidLaunchMode,现在他们添加了一个选项,允许在config.xml中进行此配置,这使得在升级cordova cli之后,我的设置消失了,直到我意识到发生了什么。 / p>
目前,cordova prepare android
不会删除你的意图过滤器,这意味着使用当前构建的cordova,只有当你删除了android平台或升级到更新的cordova android时,你才会失去你的更改。允许这样的配置。
如果你想确保不要松开这个设置,你可以在准备后更新AndroidManifest.xml时编写一个钩子。
或者您可以创建一个只更新AndroidManifest.xml的插件(您尝试使用的配置文件语法似乎是更多的plugin.xml语法)。
答案 1 :(得分:0)
我遇到了同样的问题。我不得不使用钩子作为一种解决方法,从来没有设法从config.xml
文件本身做到正确。
我记录了我在this anwser中所做的事情。我希望这有帮助!
答案 2 :(得分:0)
我设法通过在用于网络意图插件的plugin.xml文件中添加必要的条目来使其工作。
即添加此:
<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目前用于Webintent的“官方”插件),那么您会看到它是<intent-filter>
,并被属性android:name="com.darryncampbell.cordova.plugin.intent.ACTION"
引用。>
在该意图过滤器的正下方添加新的意图过滤器。
这种方法的缺点是,如果您重新安装插件,则可能需要重新输入详细信息。我无法通过在config.xml中添加条目来使其正常工作。