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

AP2*_*257 6 android

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

我想将它转换为File对象,只有一个File对象 - 我需要将它传递给另一个需要File的构造函数.

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

File newFile = new File(myURI);
Run Code Online (Sandbox Code Playgroud)

我在Eclipse中收到错误,建议我将URI转换为String.在构造函数中提供URI.getPath()也没有帮助.

这涉及' 如何将android.net.uri对象转换为java.net.uri对象?'问题,遗憾的是似乎没有好的答案,但我想要一个File对象,而不是java uri.

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

如果我在交叉发布我自己的问题,请道歉,但我想我可能需要让事情更清楚一些.

Com*_*are 6

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

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

"如果表条目是内容:URI,则永远不要尝试直接打开和读取文件(首先,权限问题会导致失败).相反,您应该调用ContentResolver.openInputStream()来获取InputStream对象你可以用来读取数据."

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

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