但是当我传递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));
}
我只需要在我的活动之间传递文件路径..
答案 0 :(得分:5)
我使用此方法从Uri获取文件路径
这是一种不可靠的方法,仅适用于少量Uri
值。
但是当我传递Uri时,它会抛出异常(“_data”列未找到),如下所示:
当然。对于Uri
值的大多数来源,该代码将失败。
从通过FileProvider创建的Uri获取文件路径
在这种特定情况下,您已经知道“文件路径”。它由代码段中名为path
的变量表示。
更一般地说,您无法获得Uri
的“文件路径”,原因很简单,没有要求Uri
指向文件,更不用说您可以访问的文件了。使用ContentResolver
和openInputStream()
等方法访问Uri
所代表的内容。