2010-08-24 115 views
1

我想在我的應用程序中實現一個數據庫。我正在關注編寫我自己的ContentProvider的教程,但我對SQLiteOpenHelper :: getType感到困惑。我們應該編寫它,實質上,編寫一個開關,返回與我們正在處理的數據類型相對應的MIME類型。有人可以解釋SQLiteOpenHelper getType

我不完全理解它。儘管我有一個例子,但我不確定,這裏恰恰應該傳達什麼。如何確定我的不同數據表的MIME類型?有人能給我一個很好的解釋嗎?

tutorial

+0

您是否閱讀過此文件: http://developer.android.com/reference/android/content/ContentProvider.html#getType%28android.net.Uri%29 – plugmind 2010-08-24 20:18:31

回答

6

我想實現我的應用程序的數據庫。

這與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_VIEWIntent用於表示在ContactsContractContentProvider一個接觸的Uri。但是,如果Android無法找出MIME類型,則無法使用Intent啓動活動。Android需要詢問ContentProvider,「喲,dawg,U給我一個這個Uri的MIME類型?」。然後,通過操作(ACTION_VIEW)和MIME類型,Android可以找到可以處理請求的匹配活動。

+0

感謝您的解釋。因此,如果我使用ContentResolver來查詢ContentProvider,那麼是否意味着我不需要實現getType(),因爲我使用AUTHORITY明確要求它?實際上,我以這種方式使用getType()返回null,它也可以。 – herbertD 2012-07-13 04:50:32

+0

@herbertD:「所以,如果我使用ContentResolver來查詢ContentProvider,是否意味着我不需要實現getType(),因爲我使用AUTHORITY明確要求它?」 - 我不會指望這種行爲,但這取決於你。 – CommonsWare 2012-07-13 10:43:08

+0

嗯,我看到,爲完成,我會更好地添加它,以便供應商可以爲更多的客戶使用。謝謝回覆! – herbertD 2012-07-13 10:57:24