我真的无法理解 mimeType 的含义。我知道它存在,因此 ContentProvider
中的 getType
方法知道与它匹配的内容。但我仍然不确定它的含义或它是如何使用的。
最佳答案
任何 ContentProvider
通常定义它处理的数据类型(例如 NotePadProvider 处理在 NotePad 的内部类中定义的 Notes
数据类型)。 MIME 类型只是通过给它一个唯一的名称来定义该数据类型的标准化方法。这允许以标准化方式将数据类型传达给与 ContentProvider
一起工作的代码。
它还有助于 ContentProvider
处理几种不同类型的数据以保持事物井井有条,例如RailwayContentProvider
可以处理火车、车站和车票,并且可以使用 MIME 类型来区分每一个。
为什么选择 MIME 类型?
当您考虑如何通过 URI(例如 Internet 上的 URL)访问 ContentProvider
时,使用 MIME 类型是自然而然的结果。就像 Internet 上的 MIME 类型一样,例如用于网页的 text/html
和用于 .jpg 图像的 image/jpeg
,Android 希望您为任何您的 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
中还有一些常量,例如 CURSOR_DIR_BASE_TYPE和 CURSOR_ITEM_BASE_TYPE .
关于android - <data> 中的 mimeType 属性是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157129/