嗨,我正在使用以下意图挑选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&然后是乌里?
在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
,然后将内容复制到本地临时文件。