为什么此自定义 MIME 类型的子类型未指定表中的特定行(来自内容 URI)?



在开发人员指南的最后,他们描述了vnd.android.cursor.dir是每个自定义MIME类型的type部分,用于多行;vnd.android.cursor.item用于单行。

然后有一个包含火车时刻表的内容提供程序示例。它authoritycom.example.trains的,它有表Line1Line2Line3。对于它的内容 URI

content://com.example.trains/Line2/5

这显然指向"Line2表中的第 5 行",返回的 MIME 类型将是:

vnd.android.cursor.item/vnd.example.line2

这并不指示它是哪一行。

问题:

  1. 我认为它应该是这样的:

    vnd.android.cursor.item/vnd.example.line2.5
    

    因为type部分确实描述了它是特定行的 MIME 类型,所以子类型还应该描述它所在的行是。不是吗?

  2. 如果vnd.android.cursor.item/vnd.example.line2是正确的,则意味着 MIME 类型是否属于特定行并不重要。这是否意味着表中的所有行都具有相同的 MIME 类型?因为MIME类型只是互联网上的文件类型。(参考资料)所以我认为由于所有行都具有相同的数据"类型"(或者换句话说,表中的行是同一事物的实例) - 所以我认为表中的所有行本质上都应该具有相同的 MIME 类型?

  3. 如果^是YES,那么将分类分为vnd.android.cursor.dirvnd.android.cursor.item有什么意义?

我认为它应该是这样的:

vnd.android.cursor.item/vnd.example.line2.5

因为类型部分确实描述了它是特定行的 MIME 类型,所以子类型还应描述它是哪一行。不是吗?

不,只text/html.30821182此网页的 MIME 类型,因为它恰好是此网站上的问题 #30821182。Android 中的 MIME 类型表示数据格式

这是否意味着表中的所有行都具有相同的 MIME 类型?

在该提供商中,是的。

因为MIME类型只是互联网上的文件类型。

Android 扩展了 MIME 类型的定义,使其比文件更通用。在ContentProvider的数据库式API的情况下,MIME类型主要用于将Uri的数据结构与可以使用该数据结构的活动链接起来。

我认为表中的所有行本质上都应该具有相同的 MIME 类型?

这是数据库样式的ContentProvider API 的典型模式。

那么将分类为 VND.android.cursor.dir 和 vnd.android.cursor.item 有什么意义呢?

前者表示内容的集合,即 SQL 数据库中的表或视图。后者表示内容的实例,即 SQL 数据库中的表或视图中的行。

相关内容

最新更新