Для чего используется атрибут mimeType в <data>? - PullRequest
46 голосов
/ 23 августа 2011

Я действительно не могу понять значение mimeType.Я знаю, что он существует, так что метод getType в ContentProvider знает, что с ним сопоставитьНо я все еще не уверен, что это значит или как это используется.

Ответы [ 3 ]

75 голосов
/ 23 августа 2011

Любой ContentProvider обычно определяет тип данных, которые он обрабатывает (например, NotePadProvider обрабатывает Notes тип данных, определенный во внутреннем классе NotePad ).MIME-тип - это просто стандартизированный способ определения этого типа данных путем присвоения ему уникального имени.Это позволяет передавать тип данных в код, который работает с ContentProvider стандартным способом.

Это также помогает ContentProvider, который обрабатывает несколько различных типов данных, чтобы упорядочить вещи, например RailwayContentProvider может обрабатывать поезда, станции и билеты и может использовать MIME-тип для различения каждого из них.

Почему MIME-типы?

Использование MIME-типовЕстественное последствие, когда вы думаете о том, как к ContentProvider получают доступ через URI, то есть что-то вроде URL в Интернете.Как и в Интернете, существуют типы MIME, такие как text/html для веб-страниц и image/jpeg для изображений .jpg, 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

Toизбегайте всех этих vnd... строк в вашем коде, есть также некоторые константы в ContentResolver, такие как CURSOR_DIR_BASE_TYPE и CURSOR_ITEM_BASE_TYPE .

12 голосов
/ 23 августа 2011

Mimetype Многоцелевые расширения Интернет-почты - это описание содержания

Текст в наборах символов, отличных от ASCII

Нетекстовые вложения

Тела сообщения с несколькими частями

Информация заголовка в наборах символов не ASCII

, а также, является ли это Pdf / epub / html / text и т.д.

3 голосов
/ 23 августа 2011

Если вы имеете в виду mime, введите его, чтобы сообщить получающему объекту, как интерпретировать файл.Также как вы видите .txt и знаете, что файл - это текстовый файл.Таким образом, вы можете обработать файл с помощью .anyExtension и браузер по-прежнему будет знать, что это .txt

...