はUri
どのテーブルも指していません。それはあなたがそれを指し示したいと思うものを指します。
Customer
2 つのテーブルがと であるとしましょうOrder
。1 人の顧客が多くの注文をする場合があります。クエリを実行してすべての未処理の注文を取得したいのですが、顧客の名前など、必要になるいくつかの顧客関連の列に結合したいと考えています。
さらに、これらのテーブルを純粋にクエリするように既に定義されているcontent://your.authority.goes.here/customer
と仮定しましょう。content://your.authority.goes.here/order
次の 2 つの選択肢があります。
に顧客の表示名の結合を追加します/order
Uri
。別の使用可能な列を用意しても、おそらくプロバイダーの既存のコンシューマーが壊れることはありません (ただし、テストは常に良い考えです)。これはContactsContract
、すべてのテーブルのほぼすべてのクエリで、連絡先の名前などのいくつかの基本列に結合することです。
content://your.authority.goes.here/orderWithCust
と同じ基本的なクエリを実行します/order
が、結合が含まれている作成します。この場合、 、 、および何らかの種類の をスローしてinsert()
、を使用してデータを変更してはならないことを思い出させることができます。update()
delete()
RuntimeException
/orderWithCust
Uri
結局、ContentProvider
Uri
システムの設計は、REST Web サービスの URL システムの設計に似ています。どちらの場合も、結合はプロバイダー/サーバー側で行う必要があるため、便利な結合を提供するために、1 つのテーブルから 1 つの URL へのベースラインを破る必要がある場合があります。