【问题标题】:Android: construct a File from an android.net.URIAndroid:从 android.net.URI 构造一个文件
【发布时间】:2010-03-01 05:01:16
【问题描述】:

我有一个 android.net.URI 对象(在 MediaStore.ACTION_VIDEO_CAPTURE 之后由 onActivityResult 返回的那种):它看起来像 content://media/video/media/33。

我想将它转换成一个 File 对象,并且只有一个 File 对象——我需要将它传递给另一个需要 File 的构造函数。

如何将这样的 URI 转换为 File 对象?如果我尝试

File newFile = new File(myURI);

我在 Eclipse 中收到一个错误,提示我应该将 URI 转换为字符串。在构造函数中提供 URI.getPath() 也无济于事。

这与“How can I convert android.net.uri object to java.net.uri object?”问题有关,不幸的是似乎没有好的答案,但我想要一个 File 对象,而不是 java uri。

我不介意是否必须将其写入字节流并再次返回 - 无论是最好的方式。

抱歉,如果我要交叉发布 my own question,但我想我可能需要让事情变得更清楚一些。

【问题讨论】:

标签: android


【解决方案1】:

如何将这样的 URI 转换为 文件对象?

您不能以可靠、符合 SDK 的方式。

"如果表项是 content: URI,你不应该尝试直接打开和读取文件(一方面,权限问题会导致失败)。相反,你应该调用 ContentResolver.openInputStream() 来获取可用于读取数据的 InputStream 对象。"

(来自http://developer.android.com/guide/topics/providers/content-providers.html

您需要修改其他代码以接受和使用InputStream。或者,如果其他代码要修改数据,则需要使用OutputStream,上面链接的页面也涵盖了这个主题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2016-05-07
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
相关资源
最近更新 更多