从FileProvider创建的Uri获取文件路径

时间:2016-10-10 16:08:36

标签: android uri android-fileprovider

我使用此方法从Uri https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java#L257

获取文件路径

但是当我传递Uri时,它会抛出异常(“_data”列未找到),如下所示:

public static Uri uriFromFile(Context context, String path) {
    if (path == null) return null;
    return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", new File(path));
}

我只需要在我的活动之间传递文件路径..

1 个答案:

答案 0 :(得分:5)

  

我使用此方法从Uri获取文件路径

这是一种不可靠的方法,仅适用于少量Uri值。

  

但是当我传递Uri时,它会抛出异常(“_data”列未找到),如下所示:

当然。对于Uri值的大多数来源,该代码将失败。

  

从通过FileProvider创建的Uri获取文件路径

在这种特定情况下,您已经知道“文件路径”。它由代码段中名为path的变量表示。

更一般地说,您无法获得Uri的“文件路径”,原因很简单,没有要求Uri指向文件,更不用说您可以访问的文件了。使用ContentResolveropenInputStream()等方法访问Uri所代表的内容。