为什么 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
,然后将内容复制到本地临时文件。
您好,我正在使用以下意图选择 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
,然后将内容复制到本地临时文件。