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

标签 android file uri

您好,我正在使用以下 Intent 在 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://如果没有 - 打开 InputStream通过context.getContentResolver().openInputStream(uri)然后复制内容到本地临时文件。

关于android - 为什么 uri 路径不适用于文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38716408/

相关文章:

android - 订阅多个 Observable 的适配器

java - 将多个图像保存在一个文件中

php - 使用 PHP 列出 .7z、.rar 和 .tar 文件中的文件

android - 多个 Intent 过滤器

java - 如何检索已存储在 firebase 数据库中并在回收器 View 中显示的图像?

java - 异步加载屏幕 Libgdx

android - C++库交叉编译

java - 如何用 Java 替换大文件的第一行?

perl - 如何将用户数据传递给 perl URI 对象

java - 在 JAX-RS UriInfo 中按顺序检索查询参数