设置Uri时出现错误的位图错误

我想使ImageView在网站上显示图像。 所以我创build一个新的ImageView并执行imgView.setImageURI(uri);

当我启动应用程序的图像不会出现,我得到的错误,“resolveUri失败的位图Uri(uri)”。

任何想法如何解决这个问题?

Solutions Collecting From Web of "设置Uri时出现错误的位图错误"

嗯..你需要下载图像,然后将其设置为位图。 这是许多例子之一。 http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html

如果它不是一个内容的URI, 这个链接可能会有所帮助。 它似乎表明imgView.setImageURI()不应该用于常规的URI。 在相关位复制:

是的, ImageView.setImageURI(ContentURI uri)可以工作,但它是针对Android平台的内容URI,而不是指定Internet资源的URI。 该约定适用于不能直接通过ContentProvider的Cursor方法公开的二进制对象(例如图像)。 而是使用String引用来引用不同的内容URI,这可以通过针对内容提供者的单独查询来解决。 setImageURI方法只是一个包装器来执行这些步骤。

我已经testing了setImageView这种用法,它按预期工作。 对于你的使用,虽然,我会看看BitmapFactory.decodeStream()URL.openStream()

此外,为了使这个答案自成一体,从该链接的另一个post的示例代码,显示如何做到这一点:

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

我没有testing这个代码,我只是偏执狂,喜欢确保SO答案是有用的,即使networking上的其他网站消失:-)

首先,你应该下载图像并保存在你的device(sdcard or memory) 。 然后,得到它的文件path,最后使用Uri.parse(filePath)将path转换为uri,调用ImageViewsetImageURI(Uri)来填充。 – 我用这种方式来达到我的目的。 并有一个错误:如果图像很大(可能超过1Mb左右,则可能会报告出现“Memeroyexception”!!!)