我正在尝试在我的应用程序中实现数据库。我正在关注编写自己的ContentProvider的教程,但我对SQLiteOpenHelper :: getType感到困惑。我们应该编写它,实际上,写一个开关,返回与我们正在处理的数据类型相对应的MIME类型。
我不完全理解它。我不确定,即使我有一个例子,这里应该传达的是什么。如何确定不同数据表的MIME类型?有人能给我一个很好的解释吗?
答案 0 :(得分:6)
我正在尝试在我的应用程序中实现数据库。
这与ContentProvider
无关。 ContentProvider
不需要使用数据库;数据库不需要被ContentProvider
隐藏。
我正在关注编写自己的ContentProvider的教程,但我很困惑 SQLiteOpenHelper ::的getType。
SQLiteOpenHelper
上没有getType()
方法。我将假设您在getType()
上提及ContentProvider
。
这里应该传达的是什么
嗯...... MIME类型。
如何确定不同数据表的MIME类型?
对于数据库,您可能发明了自己的MIME类型。请记住,ContentProvider
不仅用于表格式结构 - 它还可用于返回文件。在这种情况下,您将尝试使用适合该文件的MIME类型。
有人可以给我一个很好的解释吗?
您可能是在Web浏览器中查看此网页。当您单击链接或此处引导的任何内容时,Web浏览器向Web服务器发出HTTP请求,提供/questions/3559053/could-someone-explain-sqliteopenhelper-gettype
的URI。 StackOverflow Web服务器返回页面内容以及内容本身的MIME类型。后一部分很重要,特别是对于这个URI,因为没有文件扩展名。如果没有MIME类型,Web浏览器将不知道如何处理HTTP请求的结果。
Android遵循相同的模式。
例如,您可以为代表ACTION_VIEW
Intent
中的联系人的Uri
创建ContactsContract
ContentProvider
。但是,如果Android无法确定MIME类型,则无法使用Intent启动活动。 Android需要问ContentProvider
,“哟,dawg,你给我一个MIME类型'这个Uri?”。然后,使用操作(ACTION_VIEW
)和MIME类型,Android可以找到可以处理请求的匹配活动。