您好我正在使用以下意图在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& amp;乌里?
在android调试器中,uri对象显示(来自下载):content://com.android.providers.downloads.documents/document/67
&安培; uri.getPath()
给了我/document/67
答案 0 :(得分:2)
返回的Uri
可能有与file://
不同的方案,即它并不总是本地文件的URI或文件可用于所有设备应用程序。例如。它可能是content://
URI,其路径与本地文件系统路径没有任何共同之处。解决方法的公平方法 - 测试方案是file://
,如果不是 - 通过InputStream
打开context.getContentResolver().openInputStream(uri)
,然后将内容复制到本地临时文件。