Android4.4以上从图库选择图片返回的路径不正确的解决方法

从图库里选择图片是我们开发中非常常用的功能,如上传头像,上传相册。Android4.4之前的版本打开图库选择图片可以这样:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
activity.startActivityForResult(intent, START_ALBUM_CODE);

或:

Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
activity.startActivityForResult(intent, START_ALBUM_CODE);

然后我们重写onActivityResult(),在返回的data里我们就能获取图片的路径(怎么获取path可以到网上搜索下)。

可是在Android4.4上测试却出现问题了,获取不到正确的路径,获取的path是这样的:/document/image%3A29817,和我们正常的path:/mnt/sdcard/DCIM/100MEDIA/IMAG0021.jpg,不一样。

在Android4.4上有效的方法应该是这样(也兼容4.4以前的版本):

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
activity.startActivityForResult(intent, START_ALBUM_CODE);

这样就能获取正确的path.

ps:

另一种解决方法(感觉写的很麻烦,没去验证,仅供参考):http://blog.csdn.net/tempersitu/article/details/20557383

QQ交流群:6399844

时间: 2024-10-29 09:07:23

Android4.4以上从图库选择图片返回的路径不正确的解决方法的相关文章

Android 4.4从图库选择图片,获取图片路径并裁剪

转自:http://blog.csdn.net/tempersitu/article/details/20557383 最近在做一个从图库选择图片或拍照,然后裁剪的功能.本来是没问题的,一直在用 [java] view plaincopy Intent intent=new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 的方式来做,是调用系统图库来做,但是发现如

Android 从图库选择图片,拍照图片,裁剪图片

我直接写代码了 1先来几个常亮 private static final int PHOTO_REQUEST_CAREMA = 1;// 拍照private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择private static final int PHOTO_REQUEST_CUT = 3;// 结果private static final String PHOTO_FILE_NAME = "temp_photo.jpg"

Android拍照或从图库选择图片并裁剪

今天看<第一行代码>上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo. 一. 拍照选择图片 1.使用隐式Intent启动相机 //构建隐式Intent Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机 startActivityForResult(intent, 1); 2.处理相机拍照返回的结果 //用户点击了取消 if(data == n

android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效的解决方法

Android横竖屏幕切换时注意4.0以上配置configChanges要加上screenSize,要不还会调用onCreate(). <activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize"/> android4.0 禁止横竖屏切换使用 android:configChanges="orientati

IE中图片不显示火狐中可以显示解决方法

我的背景图片是png格式的,在IE中不显示但是在火狐和chrom中显示正常,以下是代码: body{ background: url(image/bj.jpg) no-repeat scroll 0px 0px; } 更改图片类型为jpg格式就可以了 IE中图片不显示火狐中可以显示解决方法

ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法

偶原来的用ASP.NET生成验证码图片时用的是JPG格式,今天想把它改成PNG格式的,结果就出现GDI+一般性错误,查了N久资料,才发现解决的办法,对分享此解决办法的网友深表感谢 Response.Clear();Response.ContentType = "image/PNG";img.Save(Response.OutputStream, ChartFormat.Png);竟然出现异常,是GDI+一般性错误.但是如果格式是Response.ContentType = "

imageWithContentsOfFile读取全路径返回的image为空的解决方法

下载图片缓存到本地沙盒里,发现用 imageWithContentsOfFile去读取的时候,40%左右的几率会读取为空. 查找资料和文档后找到解决方法 路径:当这次的时候是/var/mobile/Containers/Data/Application/844B1DDA-49AB-4B5C-AC76-2BBF1397B142 下一次的时候可能是/var/mobile/Containers/Data/Application/C620B610-3839-4134-9DF7-C5756F22BBCE

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

说明:在eclipse中运行java程序的时候一切正常,可是当把jar包导出的时候却发现图片没法显示,这估计是java程序的各种配置和路径问题所导致,后来找到一种解决方法,供遇到这方面问题的学习java程序的鞋同参考: Java项目下的目录结构如下: 其中class类放在包:package accpedu; (即实际是在如上bin/accpedu文件夹下面) 通过下面的方法来引用图片时,在eclipse里面执行是可以正常显示图片的: ImageIcon image1 = new ImageIco

微擎ueditor编辑器图片批量上传顺序混乱的解决方法

上周六有客户反映刚上线的商城管理系统在商品详情页批量上传图片的时候出现图片显示顺序与上传顺序不一致的问题,经排查,发现是编辑器在上传时是按上传完成的顺序插入图片的,即先传完先显示,在网上查了一下,发现很多人都有遇到这个问题,初步认为是ueditor编辑器的bug,于是按照网上的方法去解决,但都没有解决问题,调试查找之后发现网上的解决方法根本不适合微擎的多图上传,因为涉及的文件都没有被调用....无奈只好自己查找,在和同事查找了将近一天之后终于找到了两个相关文件,然后又花了些功夫,最后总算是弄好了