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

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

Source:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0821/1660.html Release time:2018-06-18 09:35:01 Author:小键键 Reading volume:188
一个android文件的Uri地址一般如下:
content://media/external/images/media/62026

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;
                            }
                        }
                    }
                }

  
I want to comment

Search

classification

Leave a message
http://blog.yujianweb.cn/index.php/
User login
You have not written any reviews yet!
You have commented!
Can only praise once!
You have a collection!