欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-08-15 10:16:05
一个android文件的uri地址一般如下: content://media/external/images/media/62026 这是一张图片的uri,那么我们如...

一个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的相互转换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。