来源:第一行代码,Android
在监听器中添加openAlbum代码即可!
private void openAlbum(){
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*");
startActivityForResult(intent, CHOOSE_PHOTO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CHOOSE_PHOTO:
if(requestCode == RESULT_OK){
if(Build.VERSION.SDK_INT >=19){
handleImageOnKitKat(data);
}else{
handleImageBeforeKitKat(data);
}
}
break;
default:
break;
}
}
@TargetApi(19)
private void handleImageOnKitKat(Intent data){
String imagePath = null;
Uri uri = data.getData();
if(DocumentsContract.isDocumentUri(this, uri)){
String docId = DocumentsContract.getDocumentId(uri);
if("com.android.providers.media.document".equals(uri.getAuthority())){
String id = docId.split(":")[1];
String selection = MediaStore.Images.Media._ID + "=" + id;
imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
selection);
Log.i(imagePath, "相册选择1");
}else if("com.android.providers.downloads.documents".equals
(uri.getAuthority())){
Uri contentUri = ContentUris.withAppendedId(Uri.parse(
"content://downloads/public_downloads"), Long.valueOf(docId));
imagePath = getImagePath(contentUri,null);
Log.i(imagePath, "相册选择2");
}
}else if("content".equalsIgnoreCase(uri.getScheme())){
imagePath = getImagePath(uri,null);
Log.i(imagePath, "相册选择3");
}else if("file".equalsIgnoreCase(uri.getScheme())){
imagePath = uri.getPath();
Log.i(imagePath, "相册选择4");
}
displayImage(imagePath);
}
private void handleImageBeforeKitKat(Intent data){
Uri uri = data.getData();
String imagePath = getImagePath(uri,null);
Log.i(imagePath, "相册选择5");
displayImage(imagePath);
}
private String getImagePath(Uri uri, String selection){
String path = null;
Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
if(cursor != null){
if(cursor.moveToFirst()){
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.
Media.DATA));
}
cursor.close();
}
Log.i(path, "相册选择");
return path;
}
private void displayImage(String imagePath){
if(imagePath !=null){
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
userImage.setImageBitmap(bitmap);
}else{
Toast.makeText(this, "failed to get image", Toast.LENGTH_LONG).show();
}
}
就这样,大家可以试试。有问题欢迎讨论!!