''[[MobileApp>Mobile Application 入門]]'' > ''[[Android>Android]]'' > ''Content Provider''
~
~
*Ⅰ.コンテントプロバイダ に アクセスする方法 [#aff20e0d]
** 1. コンテントプロバイダ利用の定石 [#r20f15c3]
*** 1.1 アクセス権を設定する [#f4f3b9b2]
マニフェストファイルにアクセス権を実装する必要がある~
例)電話帳アクセス:android.permission.READ_CONTACTS
実際のマニフェストファイルの例
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
~
*** 1.2. アクセス処理を実装する [#p8901ef3]
使用するURIを指定する~
例)電話帳の場合:content://contacts/people/ = android.provider.People.CONTENT_URI~
"content://"+パッケージ名+"."+クラス名+"/"+データカテゴリ+"/"+データのid
~
//最初のレコードを取得
final Uri uri = ContentUris.withAppendedId(android.provider.Contacts.People.CONTENT_URI, 1);
final Cursor result = managedQuery(uri, null, null, null, null);
//名前を格納した列のインデックスを取得
final int index = result.getColumnIndex(android.provider.Contacts.People.NAME);
//最初の要素を取得(本当は成功したかどうかチェックすべきだが例ためしない)
result.moveToNext();
final String name1 = result.getString(index);
~
** 2. 様々なコンテントプロバイダ [#r1dd6539]
*** 2.1 Media Provider 読書 [#uc4dafbe]
ファイルの書き込み方法~
a.コンテントプロバイダに格納したいファイルの属性を設定する~
//外部メディアを指定
Uri media = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
//保存するイメージ属性を設定
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME,name);
values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
b.コンテントプロバイダから格納領域を取得し、そこに実ファイルを捻じ込む~
//イメージを格納する領域を確保して、そのURIを取得する
ContentResolver r= getContentResolver();
Uri imageUri = r.insert(media,values);
try{
//収録したUriからアプトプットストリームを取り出す
OutputStream out = r.openOutputStream(imageUri);
bimap.compress(Bitmap.CompressFormat.JPEG,50,out);
} catch (FileNotFoundException e) {
Log.e("HelloContentsProviders" , e.toString() );
return null;
}
//*Ⅱ.コンテントプロバイダ を 実装する方法 [#h536678c]
//**DRMStore [#x2d3c017]
// android.permission.ACCESS_DRM が必要
~
''[[戻る>Android]]''