Ionique/Cordova: Ajouter intention-filtre à l'aide de config.xml
Je suis le développement d'une application mobile en utilisant Ionic Framework (basé sur Cordova).
Dans Android je inscrire mon application pour l'ouvrir *.les fichiers txt.
Je le fais en ajoutant intent-filter dans platforms/android/AndroidManifest.xml et il fonctionne.
Mais la plate-forme de dossier .gitignore: je veux le faire à l'aide de config.xml.
J'ai essayé d'ajouter dans config.xml:
<platform name="android">
<config-file target="AndroidManifest.xml" parent="/*/application/activity">
<intent-filter><!-- ... --></intent-filter>
</config-file>
<!-- ... -->
</platform>
Et j'ai essayé aussi d'ajouter:
<platform name="android">
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="CordovaApp">
<intent-filter><!-- ... --></intent-filter>
</activity>
</config-file>
<!-- ... -->
</platform>
Ensuite, j'ai essayé de mettre à jour AndroidManifest lancement
ionic prepare
Ou aussi:
ionic remove platform android && ionic add platform android
Mais AndroidManifest.xml est toujours inchangé.
Ce que je fais mal?
Je suis en utilisant Ionique 1.3.2 et Cordova 4.2.0.
Modifier
Ici, l'ensemble de la 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="[email protected]" 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>
config.xml
ou au moins l'en-tête du fichier xml?Ici, il est (tout ce qui est ajouté par Ionique à l'exception de config-file tag).
OriginalL'auteur Marco Carnazzo | 2015-01-28
Vous devez vous connecter pour publier un commentaire.
Résolu!
Je ne peux pas le faire en utilisant Ionique ou Cordova: c'est un PhoneGap fonctionnalité (voir ce Stackoverflow répondre)
Je peux le faire de deux autres façons:
J'ai préféré la seconde. J'ai trouvé un intéressant crochet pour mes fins.
Remarque: Rembember pour installer certains paquets:
Malheureusement, ce crochet fusionne les balises.
J'ai donc écrit un peu changé de version de ce crochet: voir ici. Vous pouvez mettre ce crochet /hooks/after_platform_add.
Maintenant, j'ai mon intention de configuration de filtre dans config.xml:
Et je peux mettre à jour AndroidManifest.xml la régénération de la plate-forme android:
Pour ceux qui ne sont pas XML amateurs, si vous obtenez une cordova erreur de build pour
xml unbound prefix
ensuite, vous devez ajouterxmlns:android="http://schemas.android.com/apk/res/android"
à la <widget> élément en haut de votre configCette solution est grande, mais signifie que nous devons détruire la plate-forme android à chaque fois sinon, il continue d'ajouter plusieurs <intent-filter>
J'ai édité la réponse avec un peu d'explication: vous pouvez mettre le crochet dans /hooks/after_platform_add dossier. Donc il modifier AndroidManifest qu'une seule fois.
nice, vous devriez le proposer à la cordoue des gens, ne peut pas croire que son pas pris en charge hors de la boîte
OriginalL'auteur Marco Carnazzo
J'ai eu le même problème, mais l'idée de l'installation (et puis de mémoire ou de la documentation de la dépendance) d'un groupe de mnp dépendances et ensuite à l'aide d'un grand usage général crochet était beaucoup trop lourd pour ce que j'en avais besoin.
Crochets peuvent être de simples scripts shell, qui est souvent beaucoup plus simple de modifier des fichiers texte. Dans mon cas, j'ai seulement besoin d'ajouter un intent-filter à la
MainActivity
activité qui est un travail trivial poursed
; je viens de créer le fichierhooks/after_prepare/020_add_moozvine_intents.sh
avec le contenu:Travail. Vous pouvez utiliser une approche similaire pour une simple textuelle des modifications à des fichiers générés.
OriginalL'auteur Rich
Voici la solution ci-dessus par de Riches écrit en JS pour l'avenir Googlers que j'ai eu des problèmes avec le script shell.
Utiliser ce que votre après préparer crochet.
Note: c'est dans l'ES6, vous pouvez trouver un ES5 version ici: https://gist.github.com/smowden/f863331034bf300b960beef1ae25bf82
OriginalL'auteur Christian Smorra