【发布时间】:2015-08-24 18:42:29
【问题描述】:
我正在使用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 行 col -1。确保 Cursor 在从中访问数据之前已正确初始化。
【问题讨论】:
标签: android android-intent android-cursor android-contentresolver