在开发中,经常会用到选取相册的一张照片或者拍摄一张图片,本文只讨论从相册中获取一张图片。
首先我们需要启动相册的Activity,启动方式有两种:
1,
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 0);
2,
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, 0);
两种方式的原理其实是一样的。
启动成功之后我们需要获取返回的数据。
这时候就需要我们复写onActivityResult方法了,从返回的data中获取到Uri
Uri uri = data.getData();
然后我们需要转换成为Bitmap对象,在android.provider.MediaStore.Images.Media
中有个方法:getBitmap(getContentResolver(), uri);
将返回值强转为Bitmap对象,就可以获得到Bitmap对象了。
但是,有时候我们可能还需要获取到图片的保存路径,可以通过以下代码获取:
Cursor cursor = managedQuery(uri, new String[]{Media.DATA}, null, null, null);
//移动到第一个位置
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndexOrThrow(Media.DATA));