Android MIME类型

如同一个web 站点根据 URL 返回 MIME 类型一样(允许浏览器调用相关的程序来显示具体的内容), content provider 也有根据 URI 来返回特定 MIME 类型的责任。这给数据显示增加了弹性。知道了数据的类型,你可能有不止一个程序来处理这个数据。举例来说,如果你在存储器上有一个文本文件,有很多编辑器可以用来显示这个文本文件。根据 OS 的不同,它可能会让你选择用哪个编辑器来查看此文件。
在Android 里面的 MIME 的工作方式和在 HTTP 里类似。你在 URI 里面提供给 provider 所支持的 MIME 类型,然后 provider 根据 web 中 MIME 标准返回一个由两个字符串组成的 MIME 类型识别。

你从这里发现 MIME 类型的标准: http://tools.ietf.org/html/rfc2046
根据MIME 类型的说明,一个 MIME 类型包含两个部分:一个类型和一个子类型。这里有些熟知的 MIME 类型对:
text/html
text/css
text/xml
text/vnd.curl
application/pdf
application/rtf
application/vnd.ms-excel

你可以在Internet Assigned Numbers Authority ( IANA )网站上看到所有的类型支持: h ttp://www.iana.org/assignments/media-types/
其中基本类型有
application
audio
example
image
message
model
multipart
ext
video

这些基本类型都有它的子类型。但是如果是专有的数据格式,那么子类型会以vnd 开始。举例来说,微软的 Excel 表以 vnd.ms-excel 子类型来识别,而 pdf 不是一个专有的标准,所以它的子类型没有专有前缀。
某些子类型以x- 作为前缀。这些是非标准的子类型,不需要注册。它们被认为是由两个合作机构定义的私有类型。这里有些例子:
application/x-tar
audio/x-aiff
video/x-msvideo

android 依照相似的惯例来定义 MIME 类型。 android 里面的 vnd 指那些非标准的专有的格式。为了唯一性, android 还用了类似于域名的多个关于类型和子类型的部分。此外, android 中给每个 content 的 MIME 类型包含两种形式:一个给具体的 record ,一个给多个 records 。
对于单独的record , MIME 看起来像:
vnd.android.cursor.item/vnd.yourcompanyname.contenttype
对于多个records , MIME 类型看起来像:
vnd.android.cursor.dir/vnd.yourcompanyname.contenttype

这里有一系列的例子:
//一个 note
vnd.android.cursor.item/vnd.google.note

//一个 notes 集合的目录
vnd.android.cursor.dir/vnd.google.note

MIME类型在 android 里面得到了大规模的应用,特别是在 intent 里,系统根据 MIME 数据的类型来决定调用哪个 activity 。 MIME 类型始终通过 content providers 继承自它们的 URIs 。你在使用 MIME 类型的时候要记住三点:
*基本类型和子类型代表的东西要唯一。
*如果是非标准的,专有的类型和子类型,前面需要加 vnd 。
*对于特定的需求,注意名字空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值