Définir les mimes sous Android pour nos activités

 

Nous avons vu que dans le cas d'intentions implicites, il était nécessaire de passer à android des informations afin qu'il sâche déterminer l'activité à lancer:

- L'action

- La catégorie (category android:name="android.intent.category.DEFAULT" ou category android:name="android.intent.category.LAUNCHER" pour avoir l'application dans le lancer d'application).

- Le Mime (on trouvera la liste des MIMES officiels sur le site de l'IANA).

L'action étant déclarée dans le fichier AndroidManifest tout comme la catégorie et le mime pour notre activité.

Le Mime est donc déclaré dans un intent-filter via l'élément <data android:mimeType="MIME" />

Par exemple, si nous voulons que notre application traite les fichiers .txt, il faudra définir le MIME suivant:

text/plain

Image non trouvée !Il est important de noter qu'un MIME est composé d'un type et d'un sous type. Le type est ici "text", le sous type est "plain". Sous Android, le type ou le sous-type pourra être positionné à * si vous voulez traiter tous les MIMES de type indiqué (Exemple tous les types text: text/*, ou */* pour tout traiter).

Image non trouvée !Toujours indiquer un MIME en minuscule !

 

Filtres sur le mime

Seulement, ce MIME comprend d'autres extentions: g,h,c,cc,hh,m,f90

Si notre activité doit se limiter au .txt, il faudra positionner d'autres critères qui seront des filtres sur l'uri passé:

l'uri étant construite de la manière suivante:

scheme://host:port/path ou pathPrefix ou pathPattern

<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string" />

scheme: schema

host: le serveur déclaré dans une uri par exemple supertos.free.fr ou * pour tous les serveurs.

Image non trouvée !Toujours indiquer un host en minuscule !

port: le port du chemin uri.

path: chemin complet.

patPrefix: Debut du chemin.

pathPattern: Chemin pouvant contenir des jockers. * pour remplacer tous les caractères qui suivent le dernier caractère du path: Exemple toto*

.* pour commencer la chaîne par n'importe quoi, suivi éventuellement d'une chaîne: .*\\.txt pour traiter tous les fichiers txt quelque soit la localisation et le nom.

Image non trouvée !Nous sommes en JAVA, certains caractères sont donc interprétés lors de la compilation. par exemple \ signifie qu'il ne faut pas interpréter le caractère suivant. Donc si vous voulez utiliser \ sans interprétation de la part du compilateur, il faudra le doubler !

scheme: pour indiquer le shéma de la source uri file:, http:, ... (la nature de l'information) sauf que l'on n'indiquera pas les :

Si vous ne précisez pas le schéma, le système considèrera content: ou file:

Là aussi, il faut le saisir en minuscule !

 

Exemple de ManifestAndroid.xml

Voici un exemple de paramétrage du fichier ManifestAndroid.xml:

Il ne reste plus qu'à coder l'activité AffText pour permettre le chargement et l'affichage du fichier .txt