关于从图库选择图片的问题,Android4.4前后的改动,顺便吐槽小米MIUI

项目中有需求是要从图库中选择图片并显示的。这个需求,网上一搜一大把,我也不想炒剩饭了。只是将自己碰到的一些问题,讲出来,供大家参考,规避类似问题。

最开始,我调用系统图库,没考虑过版本问题,直到找了台小米机测试,才发现问题所在。按理说,我应该感谢小米的,别急,后面就知道我为啥吐槽它了。

我调用系统图库的是ACTION_PICK,回调方法onactivityresult里代码如下:

if (requestCode==Conts.LOAD_PICTURE) {
if (resultCode==getActivity().RESULT_OK&&data!=null) {

Uri selectedImage = data.getData();  
String[] filePathColumn = { MediaStore.Images.Media.DATA };  
Cursor cursor = getContext().getContentResolver().query(selectedImage,  
filePathColumn, null, null, null);  
cursor.moveToFirst();  
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);  
String picturePath = cursor.getString(columnIndex);  
cursor.close();  

}

选择了图片之后,小米机会崩掉(别的机子,啥版本都没问题),或者返回上一层界面,或者重启app。看异常信息。指示cursor.moveToFirst(),空指针异常。也就是说,cursor为空。是uri的问题,4.4之前,返回的是包含图片绝对路劲的,4.4之后,返回的不再是绝对路劲了,而是一个图片的编码。但是,Android肯定不会这么坑,对吧,他绝对会兼容之前的版本。如果用的是ACTION_PICK,还是可以用这个方法的,但是他只能选择系统图库里的图片,例如“最近”,“图片”,“文件夹”什么的,就看不到了。不过至少给了个方法,是吧。华为,三星,魅族,oppo,都试过了,没有问题。而小米呢,又开始发扬其作屎风格了,不论版本高低,这样都不行,都会出现我上面提到的问题。得到的只是一个图片编码。你需要去转换为绝对路径,才能方便使用。得到绝对路径的方法,有大神封装好了,封装成了一个pictureHelper工具类,最后我会把这个类的代码贴上。

总结一下,就是,除了小米,你用ACTION_PICK,都能得到一个图片的绝对路径。如果是小米,用ACTION_PICK,就需要去转化了。但是,小米用ACTION_GET_

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值