下面是我为我的应用程序中的选择文件编写的代码
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("*/*");
intent.putExtra("return-data", true);
当我通过安装的其他文件管理器应用程序选择文件时,此代码正常工作。但是,在从Recent
类别中选择文件时,它会将所选文件Uri
转换为绝对路径时失败。
Uri selectedImage = intent.getData();
String[] filePathColumn = {MediaStore.Files.FileColumns.DATA};
Cursor cursor = context.getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
在上面的代码中,每当我从picturePath
类别中选择文件时,我都会将Recent
视为null。请帮帮我。
答案 0 :(得分:1)
但是,在从最近类别中选择文件时,在将所选文件Uri转换为绝对路径
时失败
A Uri
is not a file。没有可靠的方法将所选文件Uri转换为绝对路径"。请使用ContentResolver
和openInputStream()
来使用Uri
支持的内容,就像使用HTTP客户端API(例如HttpUrlConnection
)来使用由...支持的内容一样URL。