tags:

views:

292

answers:

1

I have an android.net.URI object (of the kind returned by onActivityResult after MediaStore.ACTION_VIDEO_CAPTURE): it looks like content://media/video/media/33.

I want to convert this into a File object, and only a File object - I need to pass it to another constructor that requires a File.

How can I convert a URI like this to a File object? If I try

File newFile = new File(myURI);

I get an error in Eclipse suggesting that I should convert the URI to a String. Supplying URI.getPath() in the constructor doesn't help either.

This relates to the 'How can I convert android.net.uri object to java.net.uri object?' question, which unfortunately seems to have no good answer, but I want a File object out, not a java uri.

I don't mind if I have to write it to a bytestream and back again - whatever is the best way.

Apologies if I'm cross-posting my own question, but I thought I might need to make things a bit clearer.

+1  A: 

How can I convert a URI like this to a File object?

You can't, in a reliable, SDK-compliant fashion.

"If the table entry is a content: URI, you should never try to open and read the file directly (for one thing, permissions problems can make this fail). Instead, you should call ContentResolver.openInputStream() to get an InputStream object that you can use to read the data. "

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

You will need to modify the other code to accept and utilize an InputStream. Or, if the other code is supposed to be modifying the data, it will need to use an OutputStream, a topic also covered in the page linked to above.

CommonsWare
I don't think I can modify it: it's a MediaFileSource. http://code.google.com/apis/gdata/javadoc/com/google/gdata/data/media/MediaFileSource.html#constructor_summary Can I take the InputStream, and write it to a File somehow?
AP257
Something like this maybe? http://www.exampledepot.com/egs/java.io/CopyFile.html
AP257
Don't use `MediaFileSource`. Use `MediaStreamSource`.
CommonsWare