从内容 URI 获取文件路径
Get file path from content URI
我曾经有过这个工作,但现在每次我尝试获取文件路径时都失败了。我从 Acrobat Reader 接收文件,可以接收文件名和大小,但不能接收相对文件路径。
我的代码如下所示:
if(uri.getScheme().equals("content"))
{
String[] dataFields = new String[]{
MediaStore.MediaColumns.DATA,
OpenableColumns.DISPLAY_NAME,
OpenableColumns.SIZE};
Cursor cursor = context.getContentResolver().query(uri, dataFields, null, null, null);
cursor.moveToFirst();
fileLocation = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
title = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
size = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE));
cursor.close();
contentType = context.getContentResolver().getType(uri);
}
我在 LogCat 中收到以下错误:
Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 2 columns.
我明白了,因为它找不到该列。但是,我不明白这是怎么回事?
A Uri
is not a file。不要求 Uri
来自 MediaStore
或以其他方式具有 MediaStore.MediaColumns.DATA
列。如果要访问 Uri
表示的内容,请在 ContentResolver
.
上使用 openInputStream()
我曾经有过这个工作,但现在每次我尝试获取文件路径时都失败了。我从 Acrobat Reader 接收文件,可以接收文件名和大小,但不能接收相对文件路径。
我的代码如下所示:
if(uri.getScheme().equals("content"))
{
String[] dataFields = new String[]{
MediaStore.MediaColumns.DATA,
OpenableColumns.DISPLAY_NAME,
OpenableColumns.SIZE};
Cursor cursor = context.getContentResolver().query(uri, dataFields, null, null, null);
cursor.moveToFirst();
fileLocation = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
title = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
size = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE));
cursor.close();
contentType = context.getContentResolver().getType(uri);
}
我在 LogCat 中收到以下错误:
Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 2 columns.
我明白了,因为它找不到该列。但是,我不明白这是怎么回事?
A Uri
is not a file。不要求 Uri
来自 MediaStore
或以其他方式具有 MediaStore.MediaColumns.DATA
列。如果要访问 Uri
表示的内容,请在 ContentResolver
.
openInputStream()