2010-06-01 76 views
6

我有圖像的網址。我需要做的是使用意圖啓動圖像的默認圖像查看器。啓動意圖查看器以顯示來自url的圖像

我試圖通過啓動它:

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); 

但它不工作。如果我沒有指定數據類型,則意圖啓動瀏覽器,因爲數據是一個url。它基本上可以工作(因爲你可以在瀏覽器上看到圖像),但是我想讓畫廊爲我顯示圖像。

我也可以將圖像下載到位圖中,但我仍然不知道如何使用圖庫顯示位圖(如果甚至可能的話)。有任何想法嗎?

編輯:我試着將位圖保存到緩存,然後啓動該文件的查看器,但它不起作用。你能發現我的代碼有任何錯誤嗎? (該實用程序類是一類我寫的方法簡單地創建位圖它的工作原理,這不是問題。)

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); 

編輯2:我決定,我可能需要畢竟這樣下載的圖片我決定先把它們保存在SD卡上。這造成了其他問題。我問了一個new question,因爲這是一個不同的問題。

回答

1

也許畫廊要求圖像保存到內存。

爲什麼不將圖像下載到位圖中,然後將其保存爲文件,然後在該文件上激發圖像意圖?

(如果您不希望文件之後留下來,你可以只將其保存在您的應用程序數據目錄)

+1

我希望能夠做到這一點,但不保存的東西,但我想它並不起作用。你能看看我編輯的問題,發現任何錯誤嗎? – 2010-06-01 19:11:40

+0

兩條評論:(1)在輸出臨時文件之前,對其執行setDataAndType。爲什麼不檢索保存的文件,然後將其添加到意圖? (2)當你說「它不工作」時,結果或異常是什麼? – HXCaine 2010-06-01 19:33:56

+0

在輸出之前你的意思是什麼?我壓縮位圖,關閉輸出流,然後創建意圖... – 2010-06-01 20:32:18

1

你的代碼是好的,但你需要保存在SD卡上的圖像(」臨時「文件)以使照片查看器工作。測試1.5,1.6,2.1。

0

你可以嘗試的GridView onItemClickListner這個代碼在默認的畫廊,以顯示應用

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); 
    } 
}; 

這是爲我工作:)