はUriどのテーブルも指していません。それはあなたがそれを指し示したいと思うものを指します。
Customer2 つのテーブルがと であるとしましょう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/orderWithCustUri
結局、ContentProvider Uriシステムの設計は、REST Web サービスの URL システムの設計に似ています。どちらの場合も、結合はプロバイダー/サーバー側で行う必要があるため、便利な結合を提供するために、1 つのテーブルから 1 つの URL へのベースラインを破る必要がある場合があります。