''[[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]]''


Wiki TOP   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS