我真的无法理解mimeType的含义。我知道它存在,因此getType
中的ContentProvider
方法知道要与之匹配的内容。但我仍然不确定它的意义或使用方式。
答案 0 :(得分:74)
任何ContentProvider
通常都会定义它处理的数据类型(例如NotePadProvider处理内部类NotePad中定义的Notes
数据类型。 MIME类型只是通过为其提供唯一名称来定义该数据类型的标准方法。这允许将数据类型传递给以标准化方式与ContentProvider
一起使用的代码。
它还有助于ContentProvider
处理几种不同类型的数据,以保持组织有序,例如RailwayContentProvider
可以处理火车,车站和车票,并且可以使用MIME类型来区分每个人。
为何选择MIME类型?
当您考虑如何通过URI访问ContentProvider
时,使用MIME类型是一种自然的结果,即类似于Internet上的URL。就像在互联网上有类似网页的text/html
和.jpg图像的image/jpeg
这样的MIME类型,Android希望您为ContentProvider
处理的任何数据类型定义自定义MIME类型。
示例自定义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。
答案 1 :(得分:12)
Mimetype 多用途互联网邮件扩展程序告诉您内容的说明
ASCII以外的字符集中的文本
非文字附件
包含多个部分的邮件正文
非ASCII字符集中的标头信息
以及是否是Pdf / epub / html / text等
答案 2 :(得分:3)
如果你的意思是mime键入它告诉接收实体如何解释文件。就像你看到.txt一样,知道文件是一个文本文件。这样,您可以使用.anyExtension提供文件,并让浏览器知道它是.txt