web-dev-qa-db-ja.com

<data>のmimeType属性は何に使用されますか?

MimeTypeの意味が本当にわかりません。 getTypeContentProviderメソッドが何と一致するかを知るために存在することを知っています。しかし、それが何を意味するのか、どのように使用されるのかはまだわかりません。

46
Frank Cheng

任意のContentProviderは、通常、処理するデータのタイプを定義します(例 NotePadProvider は、内部クラス NotePad で定義されたNotesデータタイプを処理します。 MIMEタイプは、一意の名前を付けることでそのデータタイプを定義する標準化された方法です。これにより、データ型を標準化された方法でContentProviderと連携するコードに伝達できます。

また、物事を整理するためにいくつかの異なるタイプのデータを処理するContentProviderも役立ちます。 a RailwayContentProviderは電車、駅、チケットを処理し、MIMEタイプを使用してそれぞれを区別できます。

なぜMIMEタイプなのか?

MIMEタイプの使用は、ContentProviderがURI(インターネット上のURLなど)を介してどのようにアクセスされるかを考えると、当然の結果です。インターネットと同じように、Webページ用のtext/htmlや.jpg画像用のimage/jpegなどのMIMEタイプがあります。Androidは、任意のデータに対してカスタムMIMEタイプを定義したいContentProviderハンドルを入力します。

カスタムMIMEタイプの例

NotePadサンプルプロジェクトのNotePad(上にリンク)クラスには、次のものがあります。

public static final String CONTENT_TYPE = "vnd.Android.cursor.dir/vnd.google.note";

このフィールドは、カスタムMIMEタイプ(type/subtypeパターンで認識可能)を定義します。

Androidでは、vnd.Android.cursor.dir/...をあらゆる種類の「ディレクトリリスト」(複数のアイテム)の最初の部分として使用し、vnd.Android.cursor.item/...をあらゆる種類の単一アイテムの最初の部分として使用することをお勧めします。

サブタイプについては、vnd.で開始し、逆ドメイン名/パッケージ名などを追加することを再度お勧めします。 vnd.Android.cursor.item/vnd.com.mydomain.myapp.mydata

コード内のすべてのvnd...文字列を回避するために、 CURSOR_DIR_BASE_TYPECURSOR_ITEM_BASE_TYPE のようなContentResolverにもいくつかの定数があります。

75

Mimetype Multipurpose Internet Mail Extensionsはコンテンツの説明を示します

ASCII以外の文字セットのテキスト

非テキスト添付ファイル

複数の部分を持つメッセージ本文

非ASCII文字セットのヘッダー情報

そして、それがPdf/epub/html/textなどであるかどうか

12
Azhar Shaikh

MIMEを入力する場合は、ファイルを解釈する方法を受信エンティティに伝えるために入力します。 .txtを見て、ファイルがテキストファイルであることを知っているように。この方法で、.anyExtensionを使用してファイルを提供し、ブラウザに.txtであることを認識させることができます。

3
Arcabard