2010-02-28 34 views
5

Tôi có đối tượng android.net.URI (thuộc loại được trả về bởi onActivityResult sau MediaStore.ACTION_VIDEO_CAPTURE): có vẻ như nội dung: // media/video/media/33.Android: xây dựng Tệp từ android.net.URI

Tôi muốn chuyển đổi điều này thành đối tượng Tệp và chỉ đối tượng Tệp - tôi cần truyền nó cho một hàm tạo khác yêu cầu Tệp.

Làm cách nào để chuyển đổi URI như thế này thành đối tượng Tệp? Nếu tôi thử

File newFile = new File(myURI); 

Tôi gặp lỗi trong Eclipse đề xuất rằng tôi nên chuyển đổi URI thành chuỗi. Việc cung cấp URI.getPath() trong hàm tạo cũng không giúp ích gì.

Điều này liên quan đến câu hỏi 'How can I convert android.net.uri object to java.net.uri object?', tiếc là dường như không có câu trả lời hay, nhưng tôi muốn có đối tượng Tệp, không phải là một java uri.

Tôi không quan tâm liệu tôi có phải viết nó lên một phát trực tuyến hay không và ngược lại - bất kể cách nào là tốt nhất.

Xin lỗi nếu tôi đăng chéo my own question, nhưng tôi nghĩ tôi có thể cần phải làm cho mọi thứ rõ ràng hơn một chút.

+0

Bản sao có thể có của http://stackoverflow.com/questions/2975197/convert-file-uri-to-file-in-android –

Trả lời

6

Làm cách nào để chuyển đổi URI như thế này thành một đối tượng tệp ?

Bạn không thể, trong thời trang tuân thủ SDK đáng tin cậy.

"Nếu mục nhập bảng là nội dung: URI, bạn không bao giờ nên cố gắng mở và đọc tệp trực tiếp (một điều, các vấn đề về quyền có thể làm cho lỗi này). Thay vào đó, bạn nên gọi ContentResolver.openInputStream() để nhận được một đối tượng InputStream mà bạn có thể sử dụng để đọc dữ liệu. "

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

bạn sẽ cần phải sửa đổi các mã khác để chấp nhận và sử dụng một InputStream. Hoặc, nếu mã khác được cho là sửa đổi dữ liệu, nó sẽ cần phải sử dụng một OutputStream, một chủ đề cũng được đề cập trong trang được liên kết ở trên.

+0

Tôi không nghĩ rằng mình có thể sửa đổi nó: đó là MediaFileSource. http://code.google.com/apis/gdata/javadoc/com/google/gdata/data/media/MediaFileSource.html#constructor_summary Tôi có thể lấy InputStream và ghi nó vào một Tệp bằng cách nào đó không? – AP257

+0

Một cái gì đó như thế này có thể? http://www.exampledepot.com/egs/java.io/CopyFile.html – AP257

+0

Không sử dụng 'MediaFileSource'. Sử dụng 'MediaStreamSource'. – CommonsWare

Các vấn đề liên quan