将 Intent 过滤器添加到 config.xml 中,以便在 AndroidManifest.xml 中正确插入(Ionic 2)

Adding intent filter into config.xml so that is inserted correctly in AndroidManifest.xml (Ionic 2)

我想将 Android 应用程序 links 用于 link 我的应用程序和我的网站。我在添加意向过滤器(正确)时遇到问题,以便在添加 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>

以及我是如何添加到 config.xml

<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>

它确实可以与 https://github.com/dpa99c/cordova-custom-config 插件一起使用,但是插入它的唯一方法是下面的代码。它在 Main Activity 中添加了第二个 activity 但它工作正常。

<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>

您的 <config-file> 块中用于 intent-filters 的语法正确,但除非您将 cordova-custom-config 插件添加到您的项目中,否则 <config-file> 块不会执行任何操作,因为Cordova CLI 仅支持 plugin.xml 插件中的 <config-file> 块(不支持 config.xml)。

因此需要 cordova-custom-config 来促进从 config.xml.

中应用自定义配置

安装插件后,您的配置应在下一个 Cordova prepare 操作中应用于 AndroidManifest.xml

注意 example project for the plugin contains some examples of custom intent filters.

您需要使用 <preference> 而不是 <config-file>:

来设置应用程序名称属性
<preference name="android-manifest/application/@android:name" value="customApplication" />