从内容URI获取文件路径

时间:2015-06-22 17:18:00

标签: android file 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.

我理解它,因为它找不到列。但是,我不明白这是怎么回事?

1 个答案:

答案 0 :(得分:4)

A Uri is not a file。不要求Uri来自MediaStore或以其他方式拥有MediaStore.MediaColumns.DATA列。如果您想访问Uri所代表的内容,请在openInputStream()上使用ContentResolver