コンテンツ プロバイダ
コンテンツ プロバイダ は、アプリケーション内外を問わず
データを公開するためのコンポーネント。
この場合のデータとは、ファイル システムや SQLite データベースなどを指す。
コンテンツ プロバイダは、
アプリケーションのデータを他のアプリケーションでも利用できるようにします。データは、ファイル システムや SQLite データベースなど、
一般に利用できる方法で格納されていれば使用できます。コンテンツ プロバイダは、ContentProvider 基本クラスの拡張です。
プロバイダが制御する型のデータを、
他のアプリケーションから取得および格納するための標準メソッド セットを実装しています。ただし、これらのメソッドをアプリケーションから直接呼び出すことはできません。
代わりに、ContentResolver オブジェクトのメソッドを呼び出します。
ContentResolver は、すべてのプロバイダと通信でき、
プロバイダと連携して関係のあるすべてのプロセス間通信を管理します。Android Developers:開発の基礎
コンテンツ プロバイダ コンポーネントを作成するために
新しいクラスファイルを作成するとき
左図のように「スーパークラス」に
「android.content.ContentProvider」と入力しておけば
コンテンツ プロバイダ 用のクラスファイルを自動生成してくれる。
自動生成されたコード。
[android]package com.example.hoge;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
public class Sample extends ContentProvider {
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO 自動生成されたメソッド・スタブ
return 0;
}
@Override
public String getType(Uri uri) {
// TODO 自動生成されたメソッド・スタブ
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO 自動生成されたメソッド・スタブ
return null;
}
@Override
public boolean onCreate() {
// TODO 自動生成されたメソッド・スタブ
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO 自動生成されたメソッド・スタブ
return null;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO 自動生成されたメソッド・スタブ
return 0;
}
}[/android]
Androidmanifest.xml を開いて、以下を追加。
[android]
android:name 属性にはクラス名。
android:authorities 属性には コンテンツ プロバイダ 名。
コンテンツ プロバイダ 名は通常、重複を避けるために
パッケージ名 + クラス名 とするようだ。
データのありかを示すアドレス。
アプリケーションがデータにアクセスするときは、上記 コンテンツ プロバイダ 名を用いて
content:// コンテンツ プロバイダ 名 /
というアドレスでアクセスする。