まずひとつ目。
Intentからギャラリーを呼び出してそこから画像を選択する方法です。
これはAndroidの機能をそのまま使ってフォトギャラリーを呼び出し選択させる。というやり方。
ギャラリーの呼び出しは
Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_PICK); startActivityForResult(intent, REQUEST_GALLEY);
これだけです。
簡単に説明すると
setType("image/*) と指定することで対象を保存されている画像にします。
setAction(Intent.ACTION_PICK) と指定することでデータを対象データを取得するためのアプリを絞ることができます。
ここで使うとすると ACTION_PICK か ACTION_GET_CONTENT の2種類があると思いますがここでは ACTION_PICK を使用しています。
違いは下図のようなかんじ。
あとは onActivityResult メソッドをオーバライドして画像を選択したときの処理を加えるだけです。
次にふたつ目。
ContentResolver で画像データを読み込む方法です。
ContentResolver で外部メディアの画像データにアクセスし情報を取得し、あとが GridView とかを使って画面に表示するやり方。
ここではサムネイル表示(GridView)を使用して表示したいので BaseAdapter を拡張して実装しました。
mResolver = getContentResolver(); Cursor cursor = mResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE)); long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID)); (省略) } cursor.close();
ContentResolver#query を使用してメディから情報を取得してあとはぐるぐる回しながらファイル名とIDを取得します。
これらを用いて GridView に表示すればOK。
この2つで参考にした記事
一応、すべてのソースをGitHubにも上げてますので興味のある方はダウンロードしてみてください。
ひとつ目のサンプル(PhotoGalleySample)
https://github.com/hayashida/PhotoGalleySample
ふたつ目のサンプル(PhotoGridSample)
https://github.com/hayashida/PhotoGridSample