web-dev-qa-db-fra.com

À quoi sert l'attribut mimeType dans <data>?

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

46
Frank Cheng

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 .

75
Philipp Reichart

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

12
Azhar Shaikh

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

3
Arcabard