android图片文件的路径地址与Uri的相互转换方法

发布时间 - 2026-01-11 00:54:31    点击率:

一个android文件的Uri地址一般如下:

content://media/external/images/media/62026

这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢?

其实很简单,直接上代码:

public static String getRealFilePath( final Context context, final Uri uri ) {
  if ( null == uri ) return null;
  final String scheme = uri.getScheme();
  String data = null;
  if ( scheme == null )
    data = uri.getPath();
  else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
    data = uri.getPath();
  } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
    Cursor cursor = context.getContentResolver().query( uri, new String[] { ImageColumns.DATA }, null, null, null );
    if ( null != cursor ) {
      if ( cursor.moveToFirst() ) {
        int index = cursor.getColumnIndex( ImageColumns.DATA );
        if ( index > -1 ) {
          data = cursor.getString( index );
        }
      }
      cursor.close();
    }
  }
  return data
  }

如我们有一个图片的路径地址又该如何获得其Uri呢?

  String type = Utils.ensureNotNull(intent.getType());
        Log.d(TAG, "uri is " + uri);
        if (uri.getScheme().equals("file") && (type.contains("image/"))) {
          String path = uri.getEncodedPath();
          Log.d(TAG, "path1 is " + path);
          if (path != null) {
            path = Uri.decode(path);
            Log.d(TAG, "path2 is " + path);
            ContentResolver cr = this.getContentResolver();
            StringBuffer buff = new StringBuffer();
            buff.append("(")
                .append(Images.ImageColumns.DATA)
                .append("=")
                .append("'" + path + "'")
                .append(")");
            Cursor cur = cr.query(
                Images.Media.EXTERNAL_CONTENT_URI,
                new String[] { Images.ImageColumns._ID },
                buff.toString(), null, null);
            int index = 0;
            for (cur.moveToFirst(); !cur.isAfterLast(); cur
                .moveToNext()) {
              index = cur.getColumnIndex(Images.ImageColumns._ID);
              // set _id value
              index = cur.getInt(index);
            }
            if (index == 0) {
              //do nothing
            } else {
              Uri uri_temp = Uri
                  .parse("content://media/external/images/media/"
                      + index);
              Log.d(TAG, "uri_temp is " + uri_temp);
              if (uri_temp != null) {
                uri = uri_temp;
              }
            }
          }
        }

以上这篇android图片文件的路径地址与Uri的相互转换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# android  # uri  # 文件路径  # Android如何通过URI获取文件路径示例代码  # Android Uri和文件路径互相转换的实例代码  # android实现Uri获取真实路径转换成File的方法  # Android7.0以上Uri转路径的方法实现(已验证)  # 给大家  # 这是  # 希望能  # 这篇  # 文件系统  # 小编  # 大家多多  # 如何获得  # 有一个  # 其实很简单  # 又该  # String  # context  # getRealFilePath  # final 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 大连 网站制作,大连天途有线官网?  Laravel storage目录权限问题_Laravel文件写入权限设置  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何用PHP快速搭建高效网站?分步指南  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Python文件操作最佳实践_稳定性说明【指导】  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何构建满足综合性能需求的优质建站方案?  如何确保FTP站点访问权限与数据传输安全?  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何在万网自助建站中设置域名及备案?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  QQ浏览器网页版登录入口 个人中心在线进入  如何在IIS7中新建站点?详细步骤解析  *服务器网站为何频现安全漏洞?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  HTML 中动态设置元素 name 属性的正确语法详解  Android自定义控件实现温度旋转按钮效果  香港网站服务器数量如何影响SEO优化效果?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  EditPlus中的正则表达式 实战(2)  如何在建站之星网店版论坛获取技术支持?  常州企业网站制作公司,全国继续教育网怎么登录?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  北京的网站制作公司有哪些,哪个视频网站最好?  中山网站推广排名,中山信息港登录入口?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何在宝塔面板中创建新站点?  如何挑选优质建站一级代理提升网站排名?  JavaScript如何实现倒计时_时间函数如何精确控制  使用豆包 AI 辅助进行简单网页 HTML 结构设计  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在七牛云存储上搭建网站并设置自定义域名?  如何在局域网内绑定自建网站域名?  如何自定义建站之星模板颜色并下载新样式?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  电商网站制作价格怎么算,网上拍卖流程以及规则?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel怎么使用artisan命令缓存配置和视图