Я пытаюсь загрузить изображение с URL-адреса для отображения в виде ImageView.Загрузка осуществляется в фоновом режиме с использованием AsyncTask.Однако вызов decodeStream объекта BitmapFactory всегда возвращает нулевой объект.Я проверил, что URL-адрес, предоставленный для соединения, правильный, но кажется, что BitmapFactory не может прочитать изображение из InputStream, возвращенного HTTP-соединением.Вот код ниже:
@Override
protected Bitmap doInBackground(String... uri) {
Bitmap bm = null;
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(Uri.encode(uri[0]));
try {
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String contentType = entity.getContentType().getValue();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int halfScreen = metrics.widthPixels / 2;
int photoWidth = halfScreen > 200 ? 200 : halfScreen;
if (contentType.contains("image/jpeg") || contentType.contains("image/png") || contentType.contains("image/gif")) {
bm = BitmapFactory.decodeStream(new BufferedInputStream(entity.getContent()));
if (bm.getWidth() > photoWidth)
bm = Bitmap.createScaledBitmap(bm, photoWidth, Math.round((photoWidth*bm.getHeight())/bm.getWidth()), true);
}
} catch (Exception e) {
bm = null;
}
return bm;
}
Странно то, что точно такой же код прекрасно работает на Nexus S, но не работает на Samsung с Android 2.1-update1.