【问题标题】:Get file path from content URI从内容 URI 获取文件路径
【发布时间】:2015-06-22 17:17:59
【问题描述】:

我一次有这个工作,但现在每次我尝试获取文件路径时它都会失败。我正在从 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.

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

【问题讨论】:

    标签: android file uri


    【解决方案1】:

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

    【讨论】:

    • True...我想要的是获取没有“content://”和其他文件夹的文件路径,以便以后可以在 File 对象中打开文件。
    • @FireFly3000:“我想要的是获取文件路径”——没有文件路径。 Uri 后面的数据不要求是您可以通过任何方式访问的文件。它可能在内部存储中。它可能在可移动存储中。它可能被加密。它甚至可能不是一个文件,而是从互联网上实时流式传输的。
    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 2014-07-31
    • 2012-08-15
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多