更新:

经过一番搜索后,我似乎并不孤单地关注这个问题:

http://code.google.com/p/android/issues/detail?id=6066

https://groups.google.com/forum/?fromgroups#!topic/android-beginners/dDnHEacrpCE

ATM有两种解决方案:

1。
(仅在某些情况下有效)在调用静态decodeStream()方法之前,实现一个Thread.sleep(300)(也许睡眠持续时间值必须更高,但是300 ms对我有用)

2。
替换以下内容:

URL pictureurl = new URL("http://www.somewebsite.com/picture15.jpg");
URLConnection urlConn = pictureurl.openConnection();
urlConn.connect();
InputStream urlStream = urlConn.getInputStream();


具有以下内容(由伊姆兰·汗建议):

HttpGet httpRequest = new HttpGet();
httpRequest.setURI(new URI("http://www.somewebsite.com/picture15.jpg"));
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
Bitmap bm = BitmapFactory.decodeStream(bufHttpEntity.getContent());
httpRequest.abort();


因此,我接受imran khan的回答,因为它是本文中所有有效答案中的唯一答案。



我的Android应用程序中包含以下代码:

URL pictureurl = new URL("http://www.somewebsite.com/picture15.jpg");

URLConnection urlConn = pictureurl.openConnection(); // NOT NULL
urlConn.setRequestProperty("Referer", "http://www.somewebsite.com/");
urlConn.connect();
InputStream urlStream = urlConn.getInputStream(); // NOT NULL

Bitmap bm = BitmapFactory.decodeStream(urlStream);
Bitmap bm2 = Bitmap.createScaledBitmap(bm, 100, 100, true);

imageView.setImageBitmap(bm2);


当我使用某个网站上的特定图像时,“ decodeStream()”方法返回null,但是当我在浏览器中加载该图像时,它显示的很好。
我可以使用来自其他网站的其他图像,这些图像导致方法“ decodeStream()”返回预期的Bitmap实例。

我在“ decodeStream()”方法的方法说明中注意到以下文本:

“如果输入流为空,或者不能用于解码位图,则该函数返回空”-我的输入流不为空!

下图显示方法“ decodeStream()”返回空值:

http://i45.tinypic.com/eah2d2.jpg

下图显示了方法“ decodeStream()”返回预期的位图实例:

https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Wiktionary_small.svg/350px-Wiktionary_small.svg.png

我正在使用Android 1.5。

这是Android / Java环境中的错误,还是我做错了什么?

最佳答案

尝试以下操作:

HttpGet httpRequest = new HttpGet();
httpRequest.setURI(new URI("http://www.somewebsite.com/picture15.jpg"));
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
Bitmap bm = BitmapFactory.decodeStream(bufHttpEntity.getContent());
httpRequest.abort();

08-16 13:14