uri获取路径

不多说了,下面是两种方法,方法一的兼容性更强,大家都知道Android系统碎片化很严重的吧~

 

------------------------------------------------------------

-------------------方法一------------------------------

------------------------------------------------------------

------------------------------------------------------------

   

    public String getImagePathFromUri(Uri fileUrl)

    {

       String fileName = null;

       Uri filePathUri = fileUrl;

       if (fileUrl != null)

       {

           if (fileUrl.getScheme().toString().compareTo("content") == 0)

           {

               // content://开头的uri

              Cursor cursor = getContentResolver().query(fileUrl, null, null, null,null);

              if (cursor != null && cursor.moveToFirst())

              {

                  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

                  fileName = cursor.getString(column_index); // 取出文件路径

 

                  // Android 4.1 更改了SD的目录,sdcard映射到/storage/sdcard0

                  if (!fileName.startsWith("/storage") && !fileName.startsWith("/mnt"))

                  {

                     // 检查是否有”/mnt“前缀

                     fileName = "/mnt" + fileName;

                  }

                  cursor.close();

              }

           }

           else if (fileUrl.getScheme().compareTo("file") == 0) // file:///开头的uri

           {

              fileName = filePathUri.toString();// 替换file://

              fileName = filePathUri.toString().replace("file://", "");

       int index = fileName.indexOf("/sdcard");

       fileName  = index == -1 ? fileName : fileName.substring(index);

 

             

              if (!fileName.startsWith("/mnt"))

              {

                  // 加上"/mnt"

                  fileName += "/mnt";

              }

           }

       }

       return fileName;

    }

------------------------------------------------------------

---------------------方法二-------------------------------

------------------------------------------------------------

------------------------------------------------------------

 

   

    public String uri2Path(Uri uri)

    {

       int actual_image_column_index;

       String img_path;

       String[] proj = { MediaStore.Images.Media.DATA };

       Cursor cursor = getContentResolver().query(uri, proj, null, null, null);

       actual_image_column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

       cursor.moveToFirst();

       img_path = cursor.getString(actual_image_column_index);

       return img_path;

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值