1

我正在尝试在我的应用程序中实现一个数据库。我正在关注关于编写自己的 ContentProvider 的教程,但我对 SQLiteOpenHelper::getType 感到困惑。我们应该编写它,并且本质上是编写一个返回与我们正在处理的数据类型相对应的 MIME 类型的开关。

我不完全明白。我不确定,即使我有一个例子,这里应该准确传达什么。如何确定不同数据表的 MIME 类型?有人可以给我一个很好的解释吗?

教程

4

1 回答 1

6

我正在尝试在我的应用程序中实现一个数据库。

这与ContentProvider. AContentProvider不需要使用数据库;数据库不需要被ContentProvider.

我正在关注关于编写自己的 ContentProvider 的教程,但我对 SQLiteOpenHelper::getType 感到困惑。

上没有getType()方法SQLiteOpenHelper。我假设您指的是getType()on ContentProvider

究竟应该在这里传达什么

嗯……一个 MIME 类型。

如何确定不同数据表的 MIME 类型?

对于数据库,您可能发明了自己的 MIME 类型。请记住,ContentProvider它不仅用于表格样式的结构——它也可以用于返回文件。在这种情况下,您会尝试使用适合相关文件的 MIME 类型。

有人可以给我一个很好的解释吗?

您可能正在 Web 浏览器中查看此网页。当您单击链接或任何将您带到此处的链接时,您的 Web 浏览器会向 Web 服务器发出 HTTP 请求,并提供/questions/3559053/could-someone-explain-sqliteopenhelper-gettype. StackOverflow Web 服务器返回页面内容以及内容本身的 MIME 类型。后一部分很重要,特别是对于这个 URI,因为没有文件扩展名。如果没有 MIME 类型,Web 浏览器将不知道如何处理 HTTP 请求的结果。

Android遵循相同的模型。

例如,您可以ACTION_VIEW IntentUri. ContactsContract ContentProvider但是,如果 Android 无法确定 MIME 类型,则无法使用 Intent 启动活动。Android 需要询问ContentProvider“哟,dawg,你给我这个 Uri 的 MIME 类型吗?”。然后,借助操作 ( ACTION_VIEW) 和 MIME 类型,Android 可以找到可以处理请求的匹配活动。

于 2010-08-24T22:51:03.180 回答