AndroidのContentProvider - ContentProviderの概要
ContentProviderはAndroidアプリの間でデータやり取りを行うために用意されてある標準APIである。
データ取得と提供
あるアプリがContentProviderを使って自分のデータを露出した場合、アプリが起動されてなくても他のアプリはContentResolverを使ってCRUD操作が可能である。
これはWebサービスと非常に似ている。 ContentProviderはAndroid内部のWebサービスであり、ContentResolverはAndroid内部のHttpClientである考えると理解が早いかも。
Uriの概要
- content://org.sample.providers.dictprovider/words
Uriの例
content://org.sample.providers.dictprovider/word/2
- wordデータ中のIDが2の記録
content://org.sample.providers.dictprovider/word/2/word
- wordデータ中のIDが2の記録のwordという文字列
content://org.sample.providers.dictprovider/words
- wordsデータすべて
Uriのパス
Uri uri = Uri.parse("content://org.sample.providers.dictprovider/words");
ContentProviderの開発
- ContentProviderのサブクラスの生成し、onCreate(),getType(),query(), insert(), update(), delete()などを実装する。
- AndroidManifest.xml中にContentProviderを登録し、android:authoritiesを指定する。
ContentResolverの開発
- ContextのgetContentResolver()でContentResolverオブジェクトを取得する。
- ContentResolverオブジェクトのquery(),insert(),update(),delete()を使う。
UriMatcher : Uriパラメータが操作するデータを確定するクラス
ContentUris : Uri文字列操作ユーティリティ
ContentProviderほかの機能
- システムContentProviderを操作する(連絡先、メディアなど) サンプルコード
- ContentProviderリスナー(ContentObserverを利用してデータ変更を監視する)