Ionic/Cordova:使用 config.xml 添加意图过滤器 [英] Ionic/Cordova: Add intent-filter using config.xml

查看:24
本文介绍了Ionic/Cordova:使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆