[HP Top] |
手机开发指南 > Android > Content Provider Ⅰ.コンテントプロバイダ に アクセスする方法 †1. コンテントプロバイダ利用の定石 †1.1 アクセス権を設定する † マニフェストファイルにアクセス権を実装する必要がある 実際のマニフェストファイルの例 <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. アクセス処理を実装する † 使用するURIを指定する //最初のレコードを取得 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. 様々なコンテントプロバイダ †2.1 Media Provider 読書 † ファイルの書き込み方法 //外部メディアを指定 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; } |