[[戻る>Android]] ~ *Ⅰ.コンテントプロバイダ に アクセスする方法 [#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_DRM" /> <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]]