2012-06-22 20 views
5

Tôi đang cố gắng lấy đường dẫn hình ảnh cục bộ để tải nó lên máy chủ. Khi sử dụng ICS trước, nó sẽ nhận được đường dẫn chuẩn trong thiết bị Android qua getRealPathFromURI(theURI)getRealPathFromURI() không hoạt động với ICS & Picasa dựa trên hình ảnh

Tuy nhiên với ICS URI sẽ chứa uriString như sau: content://com.google.android.gallery3d.provider/picasa/item/12312312312312.

và chạy getRealPathFromURI(theURI) lợi nhuận null

Do bây giờ tôi cần phải giải nén trên uriString và tự tải hình ảnh qua API (nếu tôi phát hiện rằng một hình ảnh bộ sưu tập Picasa của nó) chứ không phải là một lưu trữ cục bộ? hoặc tôi hoàn toàn thiếu một cái gì đó?

cảm ơn vì lời khuyên nào

EDIT:

dường như tôi đã tìm về vấn đề sai ...

thấy vấn đề trong liên kết dưới đây ... đó là khá nhiều những gì Tôi mong đợi tôi cần phải làm. Khá khó chịu google/android đã không xử lý này thanh lịch hơn.

Để xử lý đúng đắn lấy một hình ảnh từ thư viện mà bạn cần để xử lý ba kịch bản:

  1. Người dùng chọn một tập tin hình ảnh địa phương

  2. Người dùng chọn một hình ảnh Picasa và các thiết bị đang chạy Phiên bản Android trước 3.0

  3. Người dùng đã chọn hình ảnh Picasa và thiết bị đang chạy Android phiên bản 3.0 trở lên

http://dimitar.me/how-to-get-picasa-images-using-the-image-picker-on-android-devices-running-any-os-version/

+0

Liên kết đó vô cùng hữu ích. – Calvin

Trả lời

5

Đó là những gì tôi phát hiện ra trên thiết bị chạy Android 4.0+.

URI ICS mà bạn đưa ra làm ví dụ là URI có nội dung: // scheme, do đó, nên có một ContentProvider chịu trách nhiệm về điều đó. Do đó, việc sử dụng các thủ thuật mà getRealPathFromURI() sử dụng là gì? Chỉ cần để ContentResolver làm việc này cho bạn:

InputStream inStream = getContentResolver().openInputStream(theUri); 
Bitmap bitmap = BitmapFactory.decodeStream(is); 
+0

Cách tải tệp từ đường dẫn ổ google? –

+0

Chúng tôi có biết * có * tệp khi sử dụng Google Drive không? Tôi đoán mục đích của ContentResolver là làm cho một trừu tượng ra khỏi các nguồn dữ liệu. Bạn không cần phải biết dữ liệu ở đâu, hoặc làm thế nào để lấy nó. Có thể là một tập tin. Có thể là dữ liệu từ Google Drive. Bạn không quan tâm. –

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