Android(安卓)获取uri的正确文件路径的办法
16lz
2021-01-24
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; }
更多相关文章
- Android(安卓)解读main log和event log日志信息
- 【工具类】如何通过代码安装一个apk文件
- Android(安卓)APK反编译
- Eclipse 运行Android程序在虚拟机中,出现问题
- Android(安卓)保存图片到本地
- Android(安卓)分享功能的实现
- [Android病毒分析]木马病毒之DroidKongFu病毒
- 【Android】Android(安卓)签名相关问题
- Android(安卓)动态获取创建与删除文件权限