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

Get file path from Uri created via 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));
}

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

I use this method for getting file path from Uri

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

But it throw exception ("_data" column not found) when I pass Uri created such as below:

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

Get file path from Uri created via FileProvider

在这个具体案例中,您已经知道 "file path"。它由代码段中名为 path 的变量表示。

更一般地说,您不能为 Uri 获得 "file path",原因很简单,没有要求 Uri 指向一个文件,更不用说一个你可以访问。使用 ContentResolver 和类似 openInputStream() 的方法访问 Uri.

表示的内容