2010-09-10 54 views
9

我想使ImageView在網站上顯示圖像。因此,我創建了一個新的ImageView並執行imgView.setImageURI(uri);設置Uri時出現錯誤的位圖錯誤

當我啓動應用程序時,圖像不出現,並且出現錯誤「resolveUri在壞Bitmap Uri(uri)上失敗」。

關於如何解決這個問題的任何想法?

回答

17

如果它不是內容URI,this link可能會有所幫助。似乎表明imgView.setImageURI()不應用於常規URI。在相關位中複製:

是的,ImageView.setImageURI(ContentURI uri)適用,但它適用於Android平臺特有的內容URI,而不是指定Internet資源的URI。該約定適用於不能通過ContentProvider的Cursor方法直接公開的二元對象(例如圖像)。相反,String引用用於引用不同的內容URI,可以通過針對內容提供者的單獨查詢來解析該內容URI。 setImageURI方法僅僅是爲你執行這些步驟的一個包裝。

我測試了setImageView的這種用法,並且它按預期工作。不過,對於您的使用,我會看看BitmapFactory.decodeStream()URL.openStream()

還要使這個答案自成體系,從另一個帖子在該鏈接的代碼示例,展示瞭如何做到這一點:

private Bitmap getImageBitmap(String url) { 
    Bitmap bm = null; 
    try { 
     URL aURL = new URL(url); 
     URLConnection conn = aURL.openConnection(); 
     conn.connect(); 
     InputStream is = conn.getInputStream(); 
     BufferedInputStream bis = new BufferedInputStream(is); 
     bm = BitmapFactory.decodeStream(bis); 
     bis.close(); 
     is.close(); 
    } catch (IOException e) { 
     Log.e(TAG, "Error getting bitmap", e); 
    } 
    return bm; 
} 

我沒有測試此代碼,我只是偏執狂和喜歡,以確保SO答案是有用的,即使網絡上的其他網站消失:-)

0

首先,您應該下載圖像並將其保存在您的device(sdcard or memory)中。 然後,獲取其文件路徑,使用Uri.parse(filePath)最終將路徑轉換爲uri ,請致電ImageViewsetImageURI(Uri)填寫完整。 - 我用這種方式來達到我的目的,並且存在一個錯誤:如果圖像很大(可能超過1Mb左右,可能會報告出現「Memeroy異常」!!!)

相關問題