博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android图片文件的路径地址与Uri的相互转换
阅读量:7091 次
发布时间:2019-06-28

本文共 3030 字,大约阅读时间需要 10 分钟。

hot3.png

android图片文件的路径地址与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;                            }                        }                    }                }

 

转载于:https://my.oschina.net/u/1399599/blog/840441

你可能感兴趣的文章
女孩子,不漂亮也没关系
查看>>
Srpingboot controller service模板实现
查看>>
Helllo World
查看>>
ZJOI2007报表统计·BZOJ1058
查看>>
页面加载时序问题----BUG分析
查看>>
[算法题] 汉诺塔问题
查看>>
几何,求两整数点确定的线段上的整数点的个数
查看>>
【算法导论】学习笔记——第10章 基本数据结构
查看>>
BNUOJ52317 As Easy As Possible(树上倍增)
查看>>
STL源码阅读(一)
查看>>
c-28
查看>>
华为交换机重置密码案例
查看>>
17素材下载地址
查看>>
Jquery EasyUI1.3.1 JS加载出错
查看>>
LA 4794 Sharing Chocolate (搜索)
查看>>
Yahoo团队网站性能优化的35条黄金守则
查看>>
secureCrt Linux 文件传输
查看>>
JaveWeb 公司项目(1)----- 使Div覆盖另一个Div完成切换效果
查看>>
hdu6078[优化递推过程] 2017多校4
查看>>
zabbix 配置报警方式
查看>>