MobileApp > Android > Content Provider



Ⅰ.コンテントプロバイダ に アクセスする方法 †

1. コンテントプロバイダ利用の定石 †

1.1 アクセス権を設定する †

  マニフェストファイルにアクセス権を実装する必要がある
  例)電話帳アクセス: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. アクセス処理を実装する &dagger;

  使用する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. 様々なコンテントプロバイダ &dagger;

2.1 Media Provider 読書 &dagger;

  ファイルの書き込み方法
  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;
   }
   


  戻る

     




Wiki TOP   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS