2011/10/12

Cameraから取得したcontentから直接ファイルアクセス

CameraアプリをIntent起動して画像のcontentを取得したんだけど・・・そのファイルを直接読みたいなー・・・って場合に便利。

ようするに、以下がしたくなる

content://media/external/images/media/112
          ↓↑
file:///sdcard/DCIM/Camera/1280714136175.jpg
          
こんなときは、ContentProviderを使って検索すれば変換できる。

content⇒fileは、
Cursor c = getContentResolver().query(uri, null, null, null, null);
c.moveToFirst();
String filename = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA));

file⇒contentは、
String filename = "/sdcard/DCIM/Camera/1280714136175.jpg";
Cursor c = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null,
MediaStore.Images.ImageColumns.DATA + " = ?",
new String[]{filename},
null);
c.moveToFirst();
String contentname = "content://media/external/images/media/" +
c.getInt(c.getColumnIndex(MediaStore.MediaColumns._ID));

読みにくいな…Bloggerでソースコードをキレイに貼り付けるのはどうすりゃいいんだろ?