私はしばらく ContentProviders を調査してきましたが、Uri がどのように機能するかを正確に把握するのにまだ苦労しています。
content://app_name/パス/id
パスが指定されている場合、そのパスに対応するテーブルはどのようにアクセスされますか? そのパスでテーブルにラベルを付ける必要があるようです。そうですか?
私はしばらく ContentProviders を調査してきましたが、Uri がどのように機能するかを正確に把握するのにまだ苦労しています。
content://app_name/パス/id
パスが指定されている場合、そのパスに対応するテーブルはどのようにアクセスされますか? そのパスでテーブルにラベルを付ける必要があるようです。そうですか?
この点に関するGoogleドキュメントはあまり明確ではありません:
最初: カスタム プロバイダーの機関を定義する必要があります: http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI
<provider
android:name=".ProviderDemo"
android:authorities="com.foo.android.providerdemo" />
2番目:プロバイダーにクエリを実行するときにこの権限を使用します: http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI
//query all items
getContentResolver().query("content://com.foo.android.providerdemo/",...)
//query a single item
getContentResolver().query("content://com.foo.android.providerdemo/idOfItem>",...)
//query a view
getContentResolver().query("content://com.foo.android.providerdemo/<idOfView>/",...)
私の混乱は、SQLite の知識が不足していたことが原因でした。データベースが 1 つのテーブルだけでなく、多くのテーブルを保持していることを知りませんでした。これで、Uri の権限によってデータベースに移動し、パスによって正しいテーブルに移動することがわかりました。