我正在使用 Intent.ACTION_GET_CONTENT
,它可以打开最近的文件。从最近的文件中选择项目会得到错误的URI,但是在文件管理器中选择相同的文件会得到正确的URI,可以被我的代码处理。
public static String getRealPathFromURI(Context context, Uri uri) {
String path;
if ("content".equals(uri.getScheme())) {
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
path = cursor.getString(idx);
cursor.close();
} else {
path = uri.getPath();
}
return path;
}
注意: 当我从最近文件中选择PDF时,uri.getPath()
的输出为 /document/...
,但是当我从文件管理器中选择相同的文件时,则为 .../emulated/...
。
注意: 从最近文件中选择文件时出现错误:
无法从CursorWindow读取第0行、第-1列的数据。在访问数据之前,请确保正确初始化了游标。