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

来源:互联网 发布:js insertbefore 编辑:程序博客网 时间:2024/04/28 08:03

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

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Intent intent = new Intent();  
  2. intent.setAction(Intent.ACTION_PICK);  
  3. intent.setType("image/*");  
  4. startActivityForResult(intent, RESULT_LOAD_IMAGE);  
当我们选择一个图片以后,在onActivityResult中,我们用一下代码获取选择的图片路径:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Uri uri = data.getData();  
  2. String path = uri.getPath();  

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

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

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. if (data != null) {    
  2.     Uri uri = data.getData();    
  3.     if (!TextUtils.isEmpty(uri.getAuthority())) {    
  4.         Cursor cursor = getContentResolver().query(uri,  
  5.                 new String[] { MediaStore.Images.Media.DATA },nullnullnull);    
  6.         if (null == cursor) {    
  7.             Toast.makeText(this"图片没找到", Toast.LENGTH_SHORT).show();    
  8.             return;    
  9.         }    
  10.         cursor.moveToFirst();    
  11.         path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));  
  12.         cursor.close();    
  13.     } else {    
  14.         path = uri.getPath();    
  15.     }    
  16. }else{    
  17.     Toast.makeText(this"图片没找到", Toast.LENGTH_SHORT).show();    
  18.     return;    
  19. }   

这个path就是我们要的图片路径,我们就可以拿它做我们想做的事!!!


炒别人的,怕人家删除留下来

0 0