2014年3月1日土曜日

Android - ギャラリーにある画像のパスを取得する

Intent使用してギャラリーを起動させ、ギャラリーにある画像を選択し、パスを取得する機会があったので、メモ。
public class TestFragment extends Fragment {
    private static final int REQUEST_CODE = 0;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent, REQUEST_CODE);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE) {
            switch (resultCode) {
                case Activity.RESULT_OK:
                    String[] projection = {MediaStore.MediaColumns.DATA};
                    String selection = null;
                    String[] selectionArgs = null;
                    String sortOrder = null;
                    Cursor cursor = getActivity().getContentResolver().query(data.getData(), projection, selection, selectionArgs, sortOrder);
                    if (cursor.getCount() == 1) {
                        cursor.moveToNext();
                        String filePath = cursor.getString(0);
                        Toast.makeText(getActivity(), filePath, Toast.LENGTH_LONG).show();
                    }
            }
        }
    }
}
startActivityForResult()でギャラリーを起動させ、画像を選択すると、onActivityResult()で、結果が受け取れます。

onActivityResult()の「data」にファイルのパス情報がURIとして格納されていますので、getContentResolver().query()の第一引数として「data.getData()」で渡してあげれば、ファイルのパス情報が取得できます。


こんなところかな。

0 件のコメント:

コメントを投稿