为什么uri路径不能使用File?

时间:2016-08-02 09:17:11

标签: android file uri

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

1 个答案:

答案 0 :(得分:2)

返回的Uri可能有与file://不同的方案,即它并不总是本地文件的URI或文件可用于所有设备应用程序。例如。它可能是content:// URI,其路径与本地文件系统路径没有任何共同之处。解决方法的公平方法 - 测试方案是file://,如果不是 - 通过InputStream打开context.getContentResolver().openInputStream(uri),然后将内容复制到本地临时文件。