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