我正在使用相当“标准”的代码来尝试从url下载图片,如下所示:
private Bitmap downloadBitmap(String url){
try{
HttpUriRequest request = new HttpGet(url);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
byte[] bytes = EntityUtils.toByteArray(entity);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
return bitmap;
} else {
return null;
}
} catch (Exception e){
e.printStackTrace();
return null;
}
}
}它在下面这一行失败:
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);在那里它跳到catch块。
在Eclipse中使用debug,它似乎运行正常,变量'bytes‘中似乎有一堆东西,而且我传入的url确实在浏览器中显示了一个图像。
有没有人能建议一下这里可能存在的问题,或者更重要的是,我如何自己调试它( Eclipse、Java、Android的新手)?例如,我不知道如何处理e.printStackTrace();为了让我真正看到一些东西(尽管进行了大量的Googling搜索),Logcat中没有显示任何内容,Eclipse控制台中也没有显示任何内容
谢谢
发布于 2012-01-24 23:33:31
检查您尝试解码的图像是否不包含颜色配置文件。这事发生在我身上。BitmapFactory不知道如何处理这些错误,并且崩溃而没有出现任何有意义的错误。
要检查颜色配置文件,如果您有photoshop,只需尝试打开它,它可能会弹出一个屏幕,询问您如何处理颜色配置文件。或者,在Mac上,右键单击文件并选择“更多信息”,您可以看到一条颜色配置文件线。
发布于 2012-01-25 00:06:54
调试器通常会返回statement...it没有被执行,though...you可以尝试使用一个正常的函数作为well...The,最好的方法是在catch块中打印一些日志。
https://stackoverflow.com/questions/8988650
复制相似问题