我有一个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,请道歉,但我想我可能需要让事情更清楚一些。
答案 0 :(得分:6)
如何将这样的URI转换为 文件对象?
您不能以可靠的SDK兼容方式。
“如果表条目是内容:URI,则不应该尝试直接打开和读取文件(一方面,权限问题会导致此操作失败)。相反,您应该调用ContentResolver.openInputStream()来获取一个可用于读取数据的InputStream对象。“
(来自http://developer.android.com/guide/topics/providers/content-providers.html)
您需要修改其他代码才能接受并使用InputStream
。或者,如果其他代码应该修改数据,则需要使用OutputStream
,这个主题也包含在链接到上面的页面中。