来自' Recent'的Android选择文件

时间:2015-10-19 15:23:29

标签: android android-intent android-cursor

下面是我为我的应用程序中的选择文件编写的代码

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。请帮帮我。

1 个答案:

答案 0 :(得分:1)

  

但是,在从最近类别中选择文件时,在将所选文件Uri转换为绝对路径

时失败

A Uri is not a file。没有可靠的方法将所选文件Uri转换为绝对路径"。请使用ContentResolveropenInputStream()来使用Uri支持的内容,就像使用HTTP客户端API(例如HttpUrlConnection)来使用由...支持的内容一样URL。