我想在我的應用程序中實現一個數據庫。我正在關注編寫我自己的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