アプリケーションにデータベースを実装しようとしています。
これは とは関係ありませんContentProvider
。AContentProvider
はデータベースを使用する必要はありません。データベースを で非表示にする必要はありませんContentProvider
。
独自の ContentProvider の作成に関するチュートリアルに従っていますが、SQLiteOpenHelper::getType について混乱しています。
getType()
にはメソッドがありませんSQLiteOpenHelper
。getType()
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 は要求を処理できる一致するアクティビティを見つけることができます。