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

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

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

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

/** * Try to return the absolute file path from the given Uri * * @param context * @param uri * @return the file path or null */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;            }        }    }}

摘自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0821/1660.html

更多相关文章

  1. android中volley框架实现图片加载
  2. Android的图形与图像处理之一 使用简单图片&绘图
  3. Android(安卓)图片选择详解及实例代码
  4. Android-Storage-System
  5. android gallery 自定义边框+幻灯片效果
  6. Android(安卓)-UriMatcher,ContentUris
  7. Android本地相册图片URI转换绝对路径
  8. Android(安卓)获取drawable目录图片 并存入指定文件的步骤详解
  9. 四、android studio使用自己库编译工程

随机推荐

  1. 初学Android,启动,关闭Activity(七)
  2. android视频播放器demo
  3. Anroid图片格式转换程序(winXP+cygwin+op
  4. activity之简单的页面跳转
  5. Android新浪微博开发(四)主UI的完善
  6. android 基础控件(EditView、SeekBar等)的
  7. ubuntu16.04 Android(安卓)Studio 模拟器
  8. 详解android surfaceflinger三部曲
  9. AndroidStudio查看apk签名信息
  10. 【Android(安卓)Developers Training】 1