【问题标题】:Get content:// Uri from File从文件中获取内容:// Uri
【发布时间】:2019-11-22 11:25:39
【问题描述】:

我有一个File 对象,我想获取它的 Uri,它看起来像:

content://media/external/images/media/2683

我试过以下代码:

val uri = FileProvider.getUriForFile(activity, "${BuildConfig.APPLICATION_ID}.file_provider", pictureFile)

但我明白了:

content://my.package.name.file_provider/external_files/Pictures/photo-1574403815163.jpg

是否有可能得到我需要的 Uri?

UPD:我想获得另一个 Uri 的原因 - 我以后不能从这个 Uri 创建 File 对象。

val uri = FileProvider.getUriForFile(activity, "${BuildConfig.APPLICATION_ID}.file_provider", pictureFile)
val file = File(uri.path)

当我尝试file.exists() 时,我总是得到false

【问题讨论】:

  • 使用FileProvider 中的Uri 的问题究竟是什么,因为这是正确的解决方案?
  • @CommonsWare 我无法使用此 Uri 创建文件对象。也许我做错了,但我总是得到 File.exists() == false

标签: android file uri


【解决方案1】:

我不能用这个 Uri 创建 File 对象

那是因为你不这样做。此外,您不需要pictureFileFile

【讨论】:

  • 正如我所说的 - 我稍后需要这个文件,也许当你关闭应用程序并再次运行它时。我想将 Uri 保存在 SharedPrefs 中并稍后获取。
  • @Den:如果您愿意,欢迎您将pictureFile.getAbsolutePath() 保存到SharedPreferences。这是一个有效的文件系统路径,您可以将其与 File 构造函数一起使用以获取 File 对象。
【解决方案2】:

如果您正在使用实际路径创建文件,那么您只需将 content:// 连接到该路径

我不确定这是不是正确的方法,但我得到了你所期望的,试试这个

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    相关资源
    最近更新 更多