我想在我的应用程序中实现一个数据库。我正在关注编写我自己的ContentProvider的教程,但我对SQLiteOpenHelper :: getType感到困惑。我们应该编写它,实质上,编写一个开关,返回与我们正在处理的数据类型相对应的MIME类型。有人可以解释SQLiteOpenHelper getType
我不完全理解它。尽管我有一个例子,但我不确定,这里恰恰应该传达什么。如何确定我的不同数据表的MIME类型?有人能给我一个很好的解释吗?
我想在我的应用程序中实现一个数据库。我正在关注编写我自己的ContentProvider的教程,但我对SQLiteOpenHelper :: getType感到困惑。我们应该编写它,实质上,编写一个开关,返回与我们正在处理的数据类型相对应的MIME类型。有人可以解释SQLiteOpenHelper getType
我不完全理解它。尽管我有一个例子,但我不确定,这里恰恰应该传达什么。如何确定我的不同数据表的MIME类型?有人能给我一个很好的解释吗?
我想实现我的应用程序的数据库。
这与ContentProvider
无关。 A ContentProvider
不需要使用数据库;数据库不需要被ContentProvider
隐藏。
我下面一个约写我自己的ContentProvider的教程,但我感到困惑 SQLiteOpenHelper ::的getType。
在SQLiteOpenHelper
上没有getType()
方法。我打算假设您在ContentProvider
上提及getType()
。
什么恰恰应该在这里传达
嗯...一个MIME类型。
如何确定我的不同数据表的MIME类型?
对于数据库,您可能需要创建自己的MIME类型。请记住,ContentProvider
不仅用于表格式结构 - 它也可用于返回文件。在这种情况下,您会尝试使用适用于相关文件的MIME类型。
有人能给我一个很好的解释吗?
您大概是在Web浏览器中查看此网页。当您单击链接或任何导致您在此处的内容时,Web浏览器向Web服务器发出HTTP请求,并提供一个URI为/questions/3559053/could-someone-explain-sqliteopenhelper-gettype
的URI。 StackOverflow Web服务器返回页面的内容以及内容本身的MIME类型。后一部分很重要,特别是对于这个URI,因为没有文件扩展名。没有MIME类型,Web浏览器将不知道如何处理HTTP请求的结果。
Android遵循相同的模型。
例如,可以创建一个ACTION_VIEW
Intent
用于表示在ContactsContract
ContentProvider
一个接触的Uri
。但是,如果Android无法找出MIME类型,则无法使用Intent启动活动。Android需要询问ContentProvider
,“哟,dawg,U给我一个这个Uri的MIME类型?”。然后,通过操作(ACTION_VIEW
)和MIME类型,Android可以找到可以处理请求的匹配活动。
感谢您的解释。因此,如果我使用ContentResolver来查询ContentProvider,那么是否意味着我不需要实现getType(),因为我使用AUTHORITY明确要求它?实际上,我以这种方式使用getType()返回null,它也可以。 – herbertD 2012-07-13 04:50:32
@herbertD:“所以,如果我使用ContentResolver来查询ContentProvider,是否意味着我不需要实现getType(),因为我使用AUTHORITY明确要求它?” - 我不会指望这种行为,但这取决于你。 – CommonsWare 2012-07-13 10:43:08
嗯,我看到,为完成,我会更好地添加它,以便供应商可以为更多的客户使用。谢谢回复! – herbertD 2012-07-13 10:57:24
您是否阅读过此文件: http://developer.android.com/reference/android/content/ContentProvider.html#getType%28android.net.Uri%29 – plugmind 2010-08-24 20:18:31