2010-06-01 36 views
6

Tôi có url của hình ảnh. Những gì tôi cần làm là khởi chạy trình xem hình ảnh mặc định cho hình ảnh bằng cách sử dụng mục đích.Trình xem mục đích khởi chạy để hiển thị hình ảnh từ url

tôi đã cố gắng khởi chạy nó bằng cách sử dụng:

Uri uri = Uri.parse("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png"); 
Intent it = new Intent(Intent.ACTION_VIEW); 
it.setDataAndType(uri, "image/*") 
startActivity(it); 

Nhưng nó không hoạt động. Nếu tôi không chỉ định loại dữ liệu, mục đích sẽ khởi chạy trình duyệt vì dữ liệu là url. Nó hoạt động cơ bản (vì bạn có thể nhìn thấy hình ảnh trên trình duyệt) nhưng điều tôi muốn là để phòng trưng bày hiển thị hình ảnh cho tôi.

Tôi cũng có thể tải hình ảnh xuống một Bitmap nhưng tôi vẫn không biết cách hiển thị Bitmap bằng cách sử dụng thư viện (nếu điều đó thậm chí có thể). Bất kỳ ý tưởng?

EDIT: Tôi đã thử lưu bitmap vào bộ nhớ cache rồi khởi chạy trình xem trên tệp đó nhưng tệp không hoạt động. Bạn có thể phát hiện bất kỳ lỗi nào trên mã của tôi không? (Lớp Utilities là một lớp học i viết Phương pháp này đơn giản là tạo ra Bitmap Nó hoạt động, điều đó không phải là vấn đề..)

File temp = File.createTempFile("tempImage", ".jpg", getContext().getCacheDir()); 
Bitmap bmp = Utilities.loadBitmap(largeUrl.toString()); 
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(temp)); 
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out); 
out.close(); 
Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(temp), "image/jpg"); 
((Activity) getContext()).startActivity(intent); 

EDIT 2: Tôi quyết định rằng tôi có thể cần những hình ảnh đã tải về sau khi tất cả vì vậy tôi quyết định đầu tiên lưu chúng trên thẻ sd. Điều đó tạo ra các vấn đề khác. Tôi đã hỏi một số new question vì đó là một vấn đề khác.

Trả lời

1

Có lẽ thư viện yêu cầu hình ảnh được lưu vào bộ nhớ.

Tại sao không tải hình ảnh xuống bitmap và sau đó lưu hình ảnh đó dưới dạng tệp, sau đó kích hoạt ý đồ hình ảnh trên tệp đó?

(Nếu bạn không muốn các tập tin để dính vào xung quanh sau đó, bạn chỉ có thể lưu nó trong thư mục dữ liệu ứng dụng của bạn)

+1

Tôi muốn để có thể làm điều đó mà không lưu thứ nhưng tôi đã cố gắng nó và nó không hoạt động. Bạn có thể vui lòng xem câu hỏi đã chỉnh sửa của tôi và phát hiện ra bất kỳ sai lầm nào không? –

+0

Hai ý kiến: (1) Bạn làm setDataAndType trên tệp tạm thời, trước khi nó được xuất. Tại sao không truy xuất tệp đã lưu và sau đó thêm tệp đó vào mục đích? (2) Khi bạn nói "nó không hoạt động", kết quả hoặc ngoại lệ là gì? – HXCaine

+0

ý của bạn là gì trước khi nó được xuất? i nén bitmap, đóng dòng đầu ra và sau đó tạo ra ý định ... –

1

Mã của bạn là tốt nhưng bạn cần phải lưu hình ảnh trên thẻ sd (" tạm thời "Tệp" để trình xem ảnh hoạt động. Thử nghiệm trên 1,5, 1,6, 2,1.

0

Bạn có thể thử mã này cho onItemClickListner GridView để hiển thị trong bộ sưu tập mặc định App

OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 

     Intent it = new Intent(Intent.ACTION_VIEW); 
     it.setDataAndType(Uri.parse("file://" + (String) parent.getItemAtPosition(position)), "image/*"); 
     startActivity(it); 
    } 
}; 

đây là công việc đối với tôi :)

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