您好,我正在使用以下 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/