您的位置:首页 > 移动开发 > Android开发

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

2017-04-19 21:20 555 查看
在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;
}


  

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐