我正在尝试在我的应用程序中实现一个数据库。我正在关注关于编写自己的 ContentProvider 的教程,但我对 SQLiteOpenHelper::getType 感到困惑。我们应该编写它,并且本质上是编写一个返回与我们正在处理的数据类型相对应的 MIME 类型的开关。
我不完全明白。我不确定,即使我有一个例子,这里应该准确传达什么。如何确定不同数据表的 MIME 类型?有人可以给我一个很好的解释吗?
我正在尝试在我的应用程序中实现一个数据库。我正在关注关于编写自己的 ContentProvider 的教程,但我对 SQLiteOpenHelper::getType 感到困惑。我们应该编写它,并且本质上是编写一个返回与我们正在处理的数据类型相对应的 MIME 类型的开关。
我不完全明白。我不确定,即使我有一个例子,这里应该准确传达什么。如何确定不同数据表的 MIME 类型?有人可以给我一个很好的解释吗?
我正在尝试在我的应用程序中实现一个数据库。
这与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
Intent
为Uri
. ContactsContract
ContentProvider
但是,如果 Android 无法确定 MIME 类型,则无法使用 Intent 启动活动。Android 需要询问ContentProvider
“哟,dawg,你给我这个 Uri 的 MIME 类型吗?”。然后,借助操作 ( ACTION_VIEW
) 和 MIME 类型,Android 可以找到可以处理请求的匹配活动。