将intent filter添加到config.xml中,以便在AndroidManifest.xml中正确插入(Ionic 2)

时间:2017-05-30 12:00:06

标签: android cordova android-intent ionic2 phonegap

我想使用Android应用链接将我的应用与我的网站相关联。我在添加意图过滤器(正确)时遇到问题,以便在添加Android平台时将其写入AndroidManifest.xml。这是在Cordova / Ionic应用程序中。

我们非常感谢任何建议:slight_smile:

这是我的意图过滤器:



<intent-filter android:autoVerify="true">
<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" android:host="www.mydomain.com" />
<data android:scheme="https" android:host="www.mydomain.com" />
</intent-filter>
&#13;
&#13;
&#13;

我是如何添加添加config.xml

&#13;
&#13;
<platform name="android">
<config-file target="AndroidManifest.xml" parent="./application/activity/[@android:name='MainActivity']">
<intent-filter android:autoVerify="true">
<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" android:host="www.mydomain.com" />
<data android:scheme="https" android:host="www.mydomain.com" />
</intent-filter>	
</config-file>
<config-file target="AndroidManifest.xml" parent="./" mode="add">
<application android:name="customApplication"></application>
</config-file>
</platform>
&#13;
&#13;
&#13;

它确实适用于https://github.com/dpa99c/cordova-custom-config插件,但插入它的唯一方法是下面的代码。它在主活动中添加了第二个活动,但它工作正常。

<platform name="android">
    <config-file parent="application/activity" target="AndroidManifest.xml">
        <activity android:label="webIntentFilter" android:name="com.mydomain.myapp">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:host="www.example.com" android:scheme="http" />
                <data android:host="www.example.com" android:scheme="https" />
            </intent-filter>
        </activity>
    </config-file>
</platform>

1 个答案:

答案 0 :(得分:3)

您的<config-file>块中的for语法过滤器具有正确的语法,但除非您将cordova-custom-config插件添加到项目中,否则<config-file>块无法执行任何操作Cordova CLI仅支持<config-file>个插件中的plugin.xml块(不是config.xml)。

因此需要cordova-custom-config来促进config.xml内的自定义配置的应用。

一旦您安装了该插件,您的配置就应该应用于下一次Cordova AndroidManifest.xml操作的prepare

请注意,example project for the plugin包含custom intent filters的一些示例。

您需要使用<preference>而不是<config-file>设置应用程序名称属性:

<preference name="android-manifest/application/@android:name" value="customApplication" />