Я действительно не могу понять значение mimeType. Я знаю, что он существует, чтобы метод getType
в ContentProvider
знал, что с ним сопоставлять. Но я все еще не уверен, что это значит или как его использовать.
Что такое атрибут mimeType в <data>?
Ответ 1
Любой ContentProvider
обычно определяет тип данных, которые он обрабатывает (например, NotePadProvider обрабатывает тип данных Notes
определенный во внутреннем классе NotePad). MIME-тип - это просто стандартизированный способ определения этого типа данных путем присвоения ему уникального имени. Это позволяет передавать тип данных в код, который работает с ContentProvider
стандартным способом.
Это также помогает ContentProvider
который обрабатывает несколько различных типов данных, чтобы упорядочить вещи, например, RailwayContentProvider
может обрабатывать поезда, станции и билеты и может использовать тип MIME, чтобы отличать каждый из них.
Почему MIME типы?
Использование типов MIME является естественным следствием, когда вы думаете о том, как осуществляется доступ к ContentProvider
через URI, то есть что-то вроде URL-адреса в Интернете. Как и в Интернете, существуют типы MIME, такие как text/html
для веб-страниц и image/jpeg
для изображений .jpg, Android хочет, чтобы вы определяли пользовательский тип MIME для любого типа данных, ContentProvider
обрабатывает ваш 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...
в вашем коде, в ContentResolver
также есть некоторые константы, ContentResolver
как CURSOR_DIR_BASE_TYPE и CURSOR_ITEM_BASE_TYPE.
Ответ 2
Mimetype Многофункциональные расширения электронной почты Интернета сообщают вам описание содержимого
Текст в наборах символов, отличных от ASCII
Нетекстовые вложения
тела сообщений с несколькими частями
Информация заголовка в наборах символов, отличных от ASCII
а также является ли это Pdf/epub/html/text и т.д.
Ответ 3
Если вы имеете в виду тип mime, чтобы сообщить получающему сущности, как интерпретировать файл. Так же, как вы видите .txt и знаете, что файл является текстовым файлом. Таким образом, вы можете обслуживать файл с .anyExtension и иметь браузер, который все еще знает, что это .txt