为什么 uri 路径不适用于文件?

Why is uri path not working with File?

您好,我正在使用以下意图选择 android 中的任何文件:

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("*/*");
        startActivityForResult(intent, PICKFILE_REQUEST_CODE);

我正在获取所选文件的 Uri,而且我正在通过调用 uri.getPath() 方法获取文件路径。获取路径后,我正在使用 file = new File(new URI(filePath)); 创建文件对象,但我得到的是 IllegalArgumentException : URI is not absolute。为什么会这样?我如何获得绝对路径?有没有其他选择可以使用 Intent 然后 Uri 选择任何文件?

在 android 中,调试器 uri 对象显示为(来自下载):content://com.android.providers.downloads.documents/document/67

& uri.getPath() 给我 /document/67

返回的 Uri 可能具有不同于 file:// 的方案,即它并不总是指向本地文件或所有设备应用程序可用的文件的 URI。例如。它可能是 content:// URI,它的路径与本地文件系统路径没有任何共同之处。解决它的公平方法 - 测试方案是否为 file://,如果不是 - 通过 context.getContentResolver().openInputStream(uri) 打开 InputStream,然后将内容复制到本地临时文件。