Ionic/Cordova:使用 config.xml 添加意图过滤器 [英] Ionic/Cordova: Add intent-filter using config.xml
问题描述
我正在使用 Ionic Framework(基于 Cordova)开发移动应用.
I'm developing a mobile app using Ionic Framework (based on Cordova).
在 Android 中,我注册了我的应用程序以打开 *.txt 文件.我在platforms/android/AndroidManifest.xml中添加了intent-filter,它可以工作.但是平台文件夹在 .gitignore 中:我想使用 config.xml 来做到这一点.
In Android I register my app to open *.txt files. I do it adding intent-filter in platforms/android/AndroidManifest.xml and it works. But platform folder is in .gitignore: I want to do it using config.xml.
我尝试在 config.xml 中添加:
I tried adding in config.xml:
<platform name="android">
<config-file target="AndroidManifest.xml" parent="/*/application/activity">
<intent-filter><!-- ... --></intent-filter>
</config-file>
<!-- ... -->
</platform>
我也尝试添加:
<platform name="android">
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="CordovaApp">
<intent-filter><!-- ... --></intent-filter>
</activity>
</config-file>
<!-- ... -->
</platform>
然后我尝试更新 AndroidManifest 启动
Then I tried to update AndroidManifest launching
ionic prepare
或者:
ionic remove platform android && ionic add platform android
但 AndroidManifest.xml 始终不变.我做错了什么?
But AndroidManifest.xml is always unchanged. What am I doing wrong?
我使用的是 Ionic 1.3.2 和 Cordova 4.2.0.
I'm using Ionic 1.3.2 and Cordova 4.2.0.
编辑这里是整个 config.xml:
Edit Here the entire config.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.ionicframework.myapp551932" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>MyApp</name>
<description>
myApp
</description>
<author email="xxx@yyy.it" href="http://www.example.com/">
A Team
</author>
<content src="index.html"/>
<access origin="*"/>
<preference name="webviewbounce" value="false"/>
<preference name="UIWebViewBounce" value="false"/>
<preference name="DisallowOverscroll" value="true"/>
<preference name="BackupWebStorage" value="none"/>
<preference name="SplashScreen" value="screen"/>
<preference name="SplashScreenDelay" value="3000"/>
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" onload="true"/>
</feature>
<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="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\.txt" />
<data android:host="*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" />
<data android:pathPattern=".*\.txt" />
<data android:mimeType="*/*" />
</intent-filter>
</config-file>
<icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
<icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
<icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/>
<icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/>
<icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/>
<icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
<splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/>
<splash src="resources/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi"/>
<splash src="resources/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi"/>
<splash src="resources/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi"/>
<splash src="resources/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/>
<splash src="resources/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/>
<splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
<splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/>
<splash src="resources/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi"/>
<splash src="resources/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi"/>
<splash src="resources/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/>
<splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
</platform>
<icon src="resources/android/icon/drawable-xhdpi-icon.png"/>
</widget>
推荐答案
Cordova 9 现在直接支持使用
和
部分,例如 plugin.xml 文件.
Cordova 9 now directly supports using <config-file>
and <edit-config>
sections, like in plugin.xml files.
不使用任何插件或钩子,您可以直接执行以下操作,例如在AndroidManifest.xml中添加一个意图过滤器:
Without using any plugin or hook, you can directly do the following, for example, to add an intent filter to AndroidManifest.xml:
<?xml version='1.0' encoding='utf-8'?>
<widget id="yourdomain.app" version="1.7.8" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<!-- ... -->
<platform name="android">
<!-- ... -->
<config-file parent="application" target="AndroidManifest.xml">
<activity android:label="webIntentFilter" android:name="yourdomain.app">
<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="yourdomain.com" android:scheme="https" />
</intent-filter>
</activity>
</config-file>
</platform>
<!-- ... -->
</widget>
不要忘记将属性 xmlns:android="http://schemas.android.com/apk/res/android"
添加到您的
> 标记以避免在构建时出现 unbound prefix
错误.
Don't forget to add attribute xmlns:android="http://schemas.android.com/apk/res/android"
into your <widget>
tag to avoid unbound prefix
error at build.
这篇关于Ionic/Cordova:使用 config.xml 添加意图过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!