そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

複数のコンテンツプロバイダーの登録

複数のコンテンツプロバイダーのauthoritiesを1つのContentProviderクラスを継承した自分のコンテンツプロバイダーにマッピングすることができます。AndroidManifest.xmlの書き方はこのようになります。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sample"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

略
        <provider android:authorities="com.sample.task" android:name="com.sample.DataProvider"></provider>
        <provider android:authorities="com.sample.project" android:name="com.sample.DataProvider"></provider>
        <provider android:authorities="com.sample.comment" android:name="com.sample.DataProvider"></provider>
    </application>
</manifest>

何がうれしいかと言うと、ここではcom.sample.DataProviderにはテーブルや依存したコードはもっておらず、外から指定するコンテントプロバイダーのURI(content://com.sample.task/など)に応じて処理を切り替えるような書き方ができます。