Backlight87
8/24/2017 - 3:30 PM

从URI中获取图片真实路径

从URI中获取图片真实路径

/**
     * 从URI中获取图片真实路径
     *
     * @param pContext 上下文
     * @param uri      文件所在的uri
     * @return 返回最终路径
     */
public static String getRealPathFromUri(Context pContext, Uri uri) {
        if (null == uri) {
            return null;
        }
        String scheme = uri.getScheme();
        if (TextUtils.isEmpty(scheme)) {
            return null;
        }

        if (uri.toString().startsWith("content://com.android.providers")) {// 4.4以上的uri格式
            // :content://com.android.providers.media.documents/document/image%3A137638
            return resolveDocumentProviderUri(pContext, uri);
        } else if (ContentResolver.SCHEME_FILE.equals(scheme)) {// file:///storage/emulated/0/Android/data/com.dropbox.android/files/scratch/go.png
            String uriStr = uri.toString();
            int index = "file://".length() + 1;
            if (uriStr.length() > index) {
                return uriStr.substring(index);
            }
        } else if (uri.toString().startsWith("content://media")) {// content://media/external/images/media/65360
            return resolveMediaUri(pContext, uri);
        } else {
            return getDataColumn(pContext, uri, null, null);
        }
        return null;
    }