有人可以解释SQLiteOpenHelper getType

时间:2010-08-24 17:13:08

标签: android database android-contentprovider

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

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

tutorial

1 个答案:

答案 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可以找到可以处理请求的匹配活动。