android红米等关于读取本地文件夹图片获取路径的问题的解决

     在android开发中,有从本地文件夹中读取图片的功能,使用一下代码打开图片选择列表:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, RESULT_LOAD_IMAGE);
当我们选择一个图片以后,在onActivityResult中,我们用一下代码获取选择的图片路径:
Uri uri = data.getData();
String path = uri.getPath();

 
在这段代码中,我测试发现,在我的Nexus 4、魅族、模拟器上测试没有什么问题,但是在红米,华为等手机上测试,发现得到的path这个路径值,不是我们图片在手机上的路径,暂时还不明白是个什么值,如果根据这个path去获取图片会得到一个null值,不知为什么??? 

解决方案:在onActivityResult中,按照如下的方式,就可以在所有的手机上使用,不会出问题,亲测:

if (data != null) {  
    Uri uri = data.getData();  
    if (!TextUtils.isEmpty(uri.getAuthority())) {  
        Cursor cursor = getContentResolver().query(uri,
        		new String[] { MediaStore.Images.Media.DATA },null, null, null);  
        if (null == cursor) {  
            Toast.makeText(this, "图片没找到", Toast.LENGTH_SHORT).show();  
            return;  
        }  
        cursor.moveToFirst();  
        path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
        cursor.close();  
    } else {  
        path = uri.getPath();  
    }  
}else{  
    Toast.makeText(this, "图片没找到", Toast.LENGTH_SHORT).show();  
    return;  
} 

这个path就是我们要的图片路径,我们就可以拿它做我们想做的事!!!
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值