<data>中的mimeType属性用于什么?

Fra*_*eng 46 android mime-types

我真的无法理解mimeType的含义.我知道它存在,以便getType方法ContentProvider知道与之匹配的内容.但我仍然不确定它是什么意思或它是如何使用的.

Phi*_*art 75

任何ContentProvider通常都定义它处理的数据类型(例如,NodePadProvider处理NotesNodePad的内部类中定义的数据类型).MIME类型只是通过为其提供唯一名称来定义该数据类型的标准方法.这允许将数据类型传递给以ContentProvider标准化方式工作的代码.

它还有助于ContentProvider处理几种不同类型的数据以保持组织有序,例如RailwayContentProvider可以处理火车,车站和票证,并且可以使用MIME类型来区分每个人.

为何选择MIME类型?

当您考虑如何ContentProvider通过URI访问a时,使用MIME类型是一种自然的结果,即类似于Internet上的URL.就像在互联网上有类似text/html网页和image/jpeg.jpg图像的MIME类型,Android希望您为您的ContentProvider句柄的任何数据类型定义自定义MIME类型.

自定义MIME类型的示例

在NotePad示例项目的NodePad(上面链接)类中,您将找到:

public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.note";
Run Code Online (Sandbox Code Playgroud)

此字段定义自定义MIME类型(可由type/subtype模式识别).

Android建议您将vnd.android.cursor.dir/...任何类型的"目录列表"(多个项目)vnd.android.cursor.item/...用作第一部分,并将其用作任何类型的单个项目的第一部分.

对于子类型,再次建议启动它,vnd.然后添加类似您的反向域名/包名称,例如vnd.android.cursor.item/vnd.com.mydomain.myapp.mydata

为了避免vnd...代码中的所有字符串,还有一些常量,ContentResolverCURSOR_DIR_BASE_TYPECURSOR_ITEM_BASE_TYPE.

  • 我强烈推荐[NotePad示例项目](http://developer.android.com/resources/samples/NotePad/index.html),如果你想编写自己的`ContentProvider`(由于链接限制在评论中发布评论) ). (3认同)
  • Android文档建议您还以“ vnd。”开头子类型(在“ /”之后)以将其标记为“自定义MIME子类型” [请参阅:MIME类型中“ vnd”的含义是什么?](http:/ /stackoverflow.com/questions/5351093/what-is-the-the-意义-vnd-in-mime-types)-之后,只需使用反向域符号(即Java包名称)即可获得唯一名称。有关示例,请参见我的答案的最后一个段落:) (2认同)
  • @Philipp Reichart:很好的答案,谢谢,它应该像你在文档中回答一样清晰! (2认同)

Moh*_*ikh 12

Mimetype 多用途Internet邮件扩展是告诉您内容的描述

ASCII以外的字符集中的文本

非文字附件

具有多个部分的邮件正文

非ASCII字符集中的标头信息

以及是否是Pdf/epub/html/text等