Android获取Uri的正确文件路径的办法

public String getImagePathFromUri(final Context context, Uri picUri) {        // 选择的图片路径        String selectPicPath = null;        Uri selectPicUri = picUri;        final String scheme = picUri.getScheme();        if (picUri != null && scheme != null) {            if (scheme.equals(ContentResolver.SCHEME_CONTENT)) {                // content://开头的uri                Cursor cursor = context.getContentResolver().query(picUri, null, null, null, null);                if (cursor != null && cursor.moveToFirst()) {                    int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                    // 取出文件路径                    selectPicPath = cursor.getString(columnIndex);                    // Android 4.1 更改了SD的目录,sdcard映射到/storage/sdcard0                    if (!selectPicPath.startsWith("/storage") && !selectPicPath.startsWith("/mnt")) {                        // 检查是否有"/mnt"前缀                        selectPicPath = "/mnt" + selectPicPath;                    }                    //关闭游标                    cursor.close();                }            } else if (scheme.equals(ContentResolver.SCHEME_FILE)) {// file:///开头的uri                // 替换file://                selectPicPath = selectPicUri.toString().replace("file://", "");                int index = selectPicPath.indexOf("/sdcard");                selectPicPath = index == -1 ? selectPicPath : selectPicPath.substring(index);                if (!selectPicPath.startsWith("/mnt")) {                    // 加上"/mnt"头                    selectPicPath = "/mnt" + selectPicPath;                }            }        }        return selectPicPath;    }

更多相关文章

  1. Android(安卓)解读main log和event log日志信息
  2. 【工具类】如何通过代码安装一个apk文件
  3. Android(安卓)APK反编译
  4. Eclipse 运行Android程序在虚拟机中,出现问题
  5. Android(安卓)保存图片到本地
  6. Android(安卓)分享功能的实现
  7. [Android病毒分析]木马病毒之DroidKongFu病毒
  8. 【Android】Android(安卓)签名相关问题
  9. Android(安卓)动态获取创建与删除文件权限

随机推荐

  1. 安卓系统的启动流程
  2. Android之抽屉式弹窗功能
  3. 怎样在Android中ListView与ArrayAdapter
  4. Android代码的工程分为三个部分
  5. Android接入OpenCv实现人脸识别
  6. 疯狂Android讲义目录结构
  7. android 通过wifi 获取经纬度和获取渠道
  8. Android(安卓)SDCard UnMounted 流程分析
  9. 实现能定点移动的seekbar
  10. 关于Android软键盘弹出的问题