Je ne peux vraiment pas comprendre le sens de mimeType. Je sais qu'elle existe pour que la méthode getType
dans ContentProvider
sache quoi faire avec. Mais je ne sais toujours pas ce que cela signifie ni comment il est utilisé.
Tout ContentProvider
définit généralement le type de données qu'il gère (par exemple NotePadProvider gère un Notes
type de données défini dans une classe interne de NotePad ) . Un type MIME n'est qu'un moyen normalisé de définir ce type de données en lui donnant un nom unique. Cela permet au type de données d'être communiqué au code qui fonctionne avec un ContentProvider
d'une manière standardisée.
Il aide également un ContentProvider
qui gère plusieurs types de données différents pour garder les choses organisées, par exemple un RailwayContentProvider
peut gérer les trains, les gares et les billets et peut utiliser le type MIME pour les différencier.
Pourquoi les types MIME?
L'utilisation de types MIME est une conséquence naturelle lorsque vous pensez à la façon dont un ContentProvider
est accessible via des URI, c'est-à-dire quelque chose comme une URL sur Internet. Tout comme sur Internet, il existe des types MIME comme text/html
pour les pages Web et image/jpeg
pour les images .jpg, Android veut que vous définissiez un type MIME personnalisé pour tout type de données que votre ContentProvider
gère.
Un exemple de type MIME personnalisé
Dans la classe NotePad (liée ci-dessus) de l'exemple de projet NotePad, vous trouverez:
public static final String CONTENT_TYPE = "vnd.Android.cursor.dir/vnd.google.note";
Ce champ définit un type MIME personnalisé (reconnaissable par le type/subtype
modèle).
Android vous suggère d'utiliser vnd.Android.cursor.dir/...
comme première partie pour tout type de "liste de répertoires" (plusieurs éléments) et vnd.Android.cursor.item/...
comme première partie de tout type d'élément.
Pour le sous-type, il est à nouveau suggéré de le commencer par vnd.
puis ajoutez quelque chose comme votre nom de domaine inversé/nom de package, par exemple vnd.Android.cursor.item/vnd.com.mydomain.myapp.mydata
Pour éviter tous ces vnd...
chaînes dans votre code, il y a aussi quelques constantes dans ContentResolver
comme CURSOR_DIR_BASE_TYPE et CURSOR_ITEM_BASE_TYPE .
Mimetype Multipurpose Internet Mail Extensions est vous dire la description du contenu
Texte dans des jeux de caractères autres que ASCII
Pièces jointes non textuelles
Corps de message à plusieurs parties
Informations d'en-tête dans les jeux de caractères non ASCII
et aussi si c'est Pdf/epub/html/text etc
Si vous voulez dire mime, tapez son pour dire à l'entité réceptrice comment interpréter un fichier. Tout comme vous voyez .txt et savez qu'un fichier est un fichier texte. De cette façon, vous pouvez servir un fichier avec .anyExtension et que le navigateur sache toujours qu'il s'agit d'un .txt