package com.example.basecore.util; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; /** * @author: dai hang * @data: 2024/6/15 23:36 * @description: */ public class FileTools { public static String getRealPathFromUri(Context context, Uri uri) { if (null == uri) return null; //传入的Uri为空,结束方法 final String scheme = uri.getScheme(); //得到Uri的scheme String realPath = null; if (scheme == null) realPath = uri.getPath(); //如果scheme为空 else if (ContentResolver.SCHEME_FILE.equals(scheme)) { realPath = uri.getPath(); //如果得到的scheme以file开头 } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) { //得到的scheme以content开头 Cursor cursor = context.getContentResolver().query(uri, new String[]{MediaStore.Images.ImageColumns.DATA}, null, null, null); if (null != cursor) { if (cursor.moveToFirst()) { int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); if (index != -1) { realPath = cursor.getString(index); } } cursor.close(); //必须关闭 } } return realPath; } }