解决拾取图片回来解析真实URI有冒号的问题

来源:互联网 发布:淘宝网店模版 编辑:程序博客网 时间:2024/05/07 04:30
public static String getImageRealPathFromURI(Uri contentURI,Context context) {        String result = "";        int idx = 0;        Cursor cursor = context.getContentResolver().query(contentURI, null, null, null, null);        if (cursor == null) { // Source is Dropbox or other similar local file path            result = contentURI.getPath();        } else {            cursor.moveToFirst();            String document_id = cursor.getString(0);            MyLogUtils.d(Constants.LOG_TAG,"cursor:"+document_id);            if (document_id.contains(":"))            {                String id = document_id.split(":")[1];                String[] column = { MediaStore.Images.Media.DATA };                String sel = MediaStore.Images.Media._ID + "=?";                Cursor cursorByColon =context. getContentResolver().                        query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,                                column, sel, new String[]{ id }, null);                int columnIndex = cursorByColon.getColumnIndex(column[0]);                if (cursorByColon.moveToFirst()) {                    result = cursorByColon.getString(columnIndex);                }                cursorByColon.close();            }            else            {                idx = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                result = cursor.getString(idx);            }            cursor.close();        }        return result;    }    private static String getCursorResultByColon(Context context, String result, String fileId) {        String id = fileId;        String[] column = { MediaStore.Images.Media.DATA };        String sel = MediaStore.Images.Media._ID + "=?";        Cursor cursorByColon =context. getContentResolver().                query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,                        column, sel, new String[]{id}, null);        int columnIndex = cursorByColon.getColumnIndex(column[0]);        if (cursorByColon.moveToFirst()) {            result = cursorByColon.getString(columnIndex);        }        cursorByColon.close();        return result;    }
0 0