1

アプリケーションにデータベースを実装しようとしています。独自の ContentProvider の作成に関するチュートリアルに従っていますが、SQLiteOpenHelper::getType について混乱しています。それを書き、基本的には、扱うデータのタイプに対応する MIME タイプを返すスイッチを書くことになっています。

私はそれを完全には理解していません。例があっても、ここで正確に何が伝えられるべきかはわかりません。さまざまなデータ テーブルの MIME タイプを特定するにはどうすればよいですか? 誰かが私にこれについての良い説明を与えることができますか?

チュートリアル

4

1 に答える 1

6

アプリケーションにデータベースを実装しようとしています。

これは とは関係ありませんContentProvider。AContentProviderはデータベースを使用する必要はありません。データベースを で非表示にする必要はありませんContentProvider

独自の ContentProvider の作成に関するチュートリアルに従っていますが、SQLiteOpenHelper::getType について混乱しています。

getType()にはメソッドがありませんSQLiteOpenHelpergetType()onを参照していると仮定しますContentProvider

まさにここで伝えるべきこと

うーん...MIMEタイプです。

さまざまなデータ テーブルの MIME タイプを特定するにはどうすればよいですか?

データベースの場合、おそらく独自の MIME タイプを考え出すでしょう。ContentProviderはテーブル スタイルの構造に使用されるだけでなく、ファイルを返すためにも使用できることに注意してください。この場合、問題のファイルに適した MIME タイプを使用してみてください。

誰かが私にこれについての良い説明を与えることができますか?

この Web ページを Web ブラウザーで表示していると思われます。リンクをクリックするか、ここにたどり着いたときに、Web ブラウザーは Web サーバーに HTTP 要求を行い、URI を/questions/3559053/could-someone-explain-sqliteopenhelper-gettype. StackOverflow Web サーバーは、コンテンツ自体の MIME タイプとともに、ページのコンテンツを返しました。ファイル拡張子がないため、この後者の部分は特にこの URI にとって重要です。MIME タイプがないと、Web ブラウザーは HTTP 要求の結果をどう処理するかを認識できません。

Android も同じモデルに従います。

たとえば、 で連絡先を表す を作成ACTION_VIEW IntentできUriますContactsContract ContentProvider。ただし、Android が MIME タイプを判別する方法がないと、Intent を使用してアクティビティを開始できませんでした。Android はContentProvider、「よ、仲良し、U はこの Uri の MIME タイプを取得しましたか?」と尋ねる必要があります。次に、アクション ( ACTION_VIEW) と MIME タイプを使用して、Android は要求を処理できる一致するアクティビティを見つけることができます。

于 2010-08-24T22:51:03.180 に答える