MimeTypeの意味が本当にわかりません。 getType
のContentProvider
メソッドが何と一致するかを知るために存在することを知っています。しかし、それが何を意味するのか、どのように使用されるのかはまだわかりません。
任意の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_TYPE や CURSOR_ITEM_BASE_TYPE のようなContentResolver
にもいくつかの定数があります。
Mimetype Multipurpose Internet Mail Extensionsはコンテンツの説明を示します
ASCII以外の文字セットのテキスト
非テキスト添付ファイル
複数の部分を持つメッセージ本文
非ASCII文字セットのヘッダー情報
そして、それがPdf/epub/html/textなどであるかどうか
MIMEを入力する場合は、ファイルを解釈する方法を受信エンティティに伝えるために入力します。 .txtを見て、ファイルがテキストファイルであることを知っているように。この方法で、.anyExtensionを使用してファイルを提供し、ブラウザに.txtであることを認識させることができます。