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;
|
|
}
|
}
|