首页 文章

如何从变量类型Uri获取绝对路径

提问于
浏览
1

我无法从其他活动返回的uri获取文件路径 .

我找到了很多关于如何将Uri转换为绝对文件路径like this one的解决方案,但它总是依赖于给定链接中的音频等内容类型 .

我的应用程序提供了一个活动来发送任何类型的文件..我说我设置了意图过滤器

mimetype  */*

但是当我进入文件浏览器并从相机照片文件夹中选择一个图像文件时,我得到的路径就像/ external / images / media / 288但如果我选择一个音乐文件,我会像外部/音频/媒体/ 1336一样得到Uri

但另一方面,如果我选择非媒体文件类型(ex.pdf或zip),那么我在Uri中已经获得了绝对路径

所以你可以看到它不知道Uri会有什么路径取决于我选择用我的应用程序发送的文件 .

一种可能的解决方案是对所有类型的媒体进行游标查询,例如音频视频和图像,如果它们返回null,则检查Uri.getPath(),但我认为这是一种非常糟糕的做法或效率低下的方法!

有没有办法从任何Uri(给定文件存在)获取绝对路径而不检查每种类型的uri?

1 回答

  • 1

    我无法从其他活动返回的uri获取文件路径 .

    没有"file path"与 Uri 相关联 . Uri 指向数据源,可能是也可能不是文件,更不用说可以直接访问的文件了 .

    通过 ContentResolver 上的 openInputStream() 调用,可以获得与 Uri 相关的数据的 InputStream .

    有没有办法从任何Uri获得绝对路径

    不是任何可靠的方式 . 请按照预期的方式使用 Uri .

相关问题