赞
踩
1、启动相册
static final int REQUEST_IMAGE_GET = 1;
public void selectImageVideo() {
//4.3以上的action,该action会将文件副本导入我们的应用,即我们看到的是副本
// Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
//4.4以上的action,该action不会将文件副本导入我们的应用,即我们看到的是源文件
//只显示照片供选择,可以多选
// intent.setType("image/*");
//只显示视频供选择,可以多选
// intent.setType("video/*");
//同时显示照片和视频供选择,此时Intent.EXTRA_ALLOW_MULTIPLE不能为true,即不支持多个文件
intent.setType("*/*");
ArrayList<String> mimes = new ArrayList<>();
mimes.add("image/*");
mimes.add("video/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimes);
//4.3以上的设备才支持Intent.EXTRA_ALLOW_MULTIPLE,是否可以一次选择多个文件
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
//返回的文件是否必须存在于设备上,而不是需要从远程服务下载的,用于解决用户选中的是云端文件时的问题
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, false);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_IMAGE_GET);
}
}
2、解析选择结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_IMAGE_GET:
ClipData clipData = data.getClipData();
if (clipData == null) {
//用户只选择了一个文件
String uriStr = data.getDataString();
//判断用户选择的是照片还是视频
if (uriStr.contains("image")) {
Uri fullPhotoUri = data.getData();
mImageView.setImageURI(fullPhotoUri);
} else if (uriStr.contains("VIDEO")) {
//TODO 显示视频
}
} else {
//用户选择了多个文件
Uri firstUri = clipData.getItemAt(0).getUri();
String uriStr = firstUri.toString();
//判断用户选择的是照片还是视频
if (uriStr.contains("image")) {
mImageView.setImageURI(firstUri);
} else if (uriStr.contains("VIDEO")) {
//TODO 显示视频
}
}
break;
default:
break;
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。