android - <data> 中的 mimeType 属性是做什么用的?

标签 android mime-types

我真的无法理解 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_TYPECURSOR_ITEM_BASE_TYPE .

关于android - <data> 中的 mimeType 属性是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157129/

相关文章:

php - 上传中 Mimetypes 的可靠性 (PHP)

java - 如何在android ListView 中显示带有json url的图像

android - adb uninstall 命令在 Bash shell for 语句中不起作用

java - 如果未设置某个值,如何抛出编译时异常。

android - 尝试有选择地重绘安卓游戏的背景,但移动图像在屏幕上重复

svg - 如果 mime-type 等于 text/xml,则显示 svg

java - 为什么此 java 邮件以纯文本而不是 html 形式到达收件人?

jquery - 通过 jQuery.ajax 在 Firefox 中加载客户端 JSON 时出现 "not well-formed"警告

android - 如何在 Android 上创建音频示波器

Django 开发服务器和 MIME 类型