【问题标题】:Java Uri.fromFile path issueJava Uri.fromFile 路径问题
【发布时间】:2013-10-25 02:54:02
【问题描述】:

好的,我终于把问题归结为这个方法了。

我有一个名为 file 的 File 对象,当我执行 toString() 时,它会输出以下内容

/storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg

现在将File对象插入到下面的方法中

Uri uriFile = Uri.fromFile(file);

当我执行 uriFile.toString() 时,它会输出以下内容

file:///storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg

现在我尝试删除“/storage...”开头的/,但它仍然不起作用,有人知道为什么会这样吗?它应该是 file:// 和其他任何东西一样,但它包含其中三个。

我试图为图像模仿这个:http://developer.android.com/guide/topics/media/camera.html#saving-media

尝试保存文件时出现此错误:

10-16 22:16:39.945: E/AndroidRuntime(32080): java.lang.RuntimeException: 
Failure delivering result ResultInfo{who=android:fragment:2, request=100, 
result=-1, data=null} to activity 
{com.example.ecohelp/com.example.ecohelp.MainActivity}: java.lang.NullPointerException

【问题讨论】:

    标签: android path uri


    【解决方案1】:

    这被认为是正确的行为,因为 URI 包含以下元素:

    • 方案:file://
    • 路径:/storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg

    所有文件 URI 通常有 3 个斜杠,两个用于方案,一个表示路径应从文件系统的根目录开始 (/)。

    【讨论】:

      【解决方案2】:

      我不认为这是因为 file:// 之后的额外 / 字符。实际上,API 中提到了一个示例,其中包含 files:///。

      http://developer.android.com/reference/android/net/Uri.html#fromFile(java.io.File)

      根据错误消息,您似乎没有正确地将数据传递给 MainActivity。或许我们可以看到更多代码?

      【讨论】:

        【解决方案3】:

        其实你收到的字符串就是正确的URI。

        简而言之,URI 语法如下:

        (方案)://(路径)

        其中路径可能包含更多子字段(请查看http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax,了解有关这些子字段的更完整讨论)。

        现在,对于“文件”方案,路径是相对本地路径或绝对本地路径。绝对路径,在基于 Unix 的系统上,将以斜杠开头。

        所以你的字符串是完全正确的:

        file:///storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg

        表示方案为“文件”,路径为绝对本地文件:“/storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg”,即你创建的File对象的正确位置.

        至于您的 NullPointerException,我认为它与 URI 或文件无关。我对 Android 开发了解不多,但我相信你应该在某个地方有一个 onActivityResult 方法。会不会是你在那里调用某个变量的方法,而不首先检查空值?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 2010-09-24
          • 2021-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多