在Android中,可以使用以下方法从SD卡中的文件Uri获取文件路径:
public String getFilePathFromUri(Context context, Uri uri) {
String filePath = null;
if (uri.getScheme().equals("file")) {
filePath = uri.getPath();
} else if (uri.getScheme().equals("content")) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
}
}
return filePath;
}
这个方法接受一个Context对象和一个Uri对象作为参数,并返回从Uri获取的文件路径。
使用方法如下:
Uri fileUri = ... // 从SD卡中获取的文件Uri
String filePath = getFilePathFromUri(context, fileUri);
请确保添加了适当的权限,以便访问SD卡和媒体存储:
请注意,这个方法只适用于从SD卡中选择的文件Uri。对于其他类型的Uri,可能需要使用不同的方法来解析文件路径。