意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Android 多媒体应用:从相册选择照片显示(解决相册中图片显示不出来的问题)

来源:恒创科技 编辑:恒创科技编辑部
2024-02-02 22:51:59


  这篇博客是补充之前写的​​调用系统摄像机拍照​​​,也算是比较重要就单独拿出来了,我们看到的许多应用不仅可以调用摄像机也可以直接从图片中进行选择,因此我们应该给予用户更好的选择与体验,因此学会怎样从相册中选择图片进行显示也是非常必要的。
  从系统中调用图片进行显示在ImageView中。

从相册中选择照片

使用步骤很简单,跟开启相机差不多,都需要一个Intent,设置Intent的action操作,然后start即可,代码如下:


Android 多媒体应用:从相册选择照片显示(解决相册中图片显示不出来的问题)

Intent intent=new Intent(Intent.ACTION_GET_CONTENT);
//设置获取类型
intent.setType("image/*");
startActivityForResult(intent, 0x24);

上面的代码并没有将图片展示在我们的activity当中,还是需要在onActivityResult方法中进行操作。我们来看下稍微完整点的代码。
点击打开相册

mbtn_start_camera.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}

Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, 0x23);

}
});

activity结果返回

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == RESULT_OK) {
switch (requestCode) {
case 0x24:
//获得选择的图片
Uri uri=data.getData();
//在ImageView中进行显示
mimageview.setImageURI(uri);
default:
break;
}


}
}

备注:布局一个Button一个ImageView

解决相册中图片显示不出来的问题

如果采用上面的代码照片显示不出来,可以采用下面的方式让图片显示。

@NonNull
private File getFilePath(Uri uri) {
//获得相册中所有文件的数据
String[] proj = {MediaStore.Images.Media.DATA};
//获取Cursor对象,用于指定查询位置
Cursor actualimagecursor = managedQuery(uri, proj, null, null, null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String img_path = actualimagecursor.getString(actual_image_column_index);
return new

备注:
​​​可以参考此处对managedQuery的介绍来理解这部分代码​​

//managedQuery获取一个包含指定数据的 Cursor 对象,
//并由 Activity 来接管这个 Cursor 的生命周期
public final Cursor managedQuery(Uri uri,

String[] projection,

String selection,

String[] selectionArgs,

String


上一篇: Android百度地图(一)——简单使用 下一篇: 手机怎么远程登录云服务器?