Android:从android.net.URI构造一个文件

时间:2010-02-28 20:53:23

标签: android

我有一个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转换为String。在构造函数中提供URI.getPath()也无济于事。

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

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

如果我正在交叉发布my own question,请道歉,但我想我可能需要让事情更清楚一些。

1 个答案:

答案 0 :(得分:6)

  

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

您不能以可靠的SDK兼容方式。

“如果表条目是内容:URI,则不应该尝试直接打开和读取文件(一方面,权限问题会导致此操作失败)。相反,您应该调用ContentResolver.openInputStream()来获取一个可用于读取数据的InputStream对象。“

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

您需要修改其他代码才能接受并使用InputStream。或者,如果其他代码应该修改数据,则需要使用OutputStream,这个主题也包含在链接到上面的页面中。