Android相册选取图片
目前从图库选择图片可以有两种方法:
以下结果属于vivo Xplay,Android Version 4.4.4测试结果,如果有其他机型测试我会补充
1.Intent.ACTION_PICK:
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, PHOTO_PICK);
onActivityResult返回的Intent中:
intent.getData()
会返回所选图片的Uri,格式为content://media/external/images/media/919
intent.getExtras()
返回的bundle中包含一个boolean变量,通过data.getExtras().get("isFinishGallery")
获取,应该是指是否获取完毕,查询文档没有官方结果。intent.putExtra("return-data",false)
对返回值没有影响。
2.Intent.ACTION_GET_CONTENT
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");//不加会导致crash
onActivityResult返回的Intent中:
intent.getData()
返回所选图片的Uri:
关于返回Uri格式的说明:
系统版本大于等于19(KitKat):
content://com.android.providers.media.documents/document/image%3A919
系统版本低于19:
content://media/external/images/media/919
可以通过以下函数获取真实路径:
private String getRealPathFromURI(Context context,Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(proj[0]);
String path = cursor.getString(columnIndex);
cursor.close();
return path;
}
return contentUri.getPath();
}
- Uri获取bitmap的方法可以参考Bitmap相关:读取大图片.