Проблема с загрузкой ImageView из InputStream, полученного из веб-службы в Android 3.0 и выше

Мое приложение должно отображать предварительный просмотр изображения из данных изображения, полученных как InputStream из веб-службы. InputStream декодируется в Bitmap для отображения в ImageView. Весь этот процесс отлично работает в Android 2.2 и 2.3, но не работает в Android 3.0 и 4.0. В последнем случае декодированное растровое изображение равно нулю, тогда как в версии 2.x все в порядке.

Вот фрагмент кода, который я использую.

ImageView imgView = (ImageView) findViewById(R.id.image);       
String imageUrl = "my webservice url";      
HttpClient httpClient = new DefaultHttpClient();
HttpGet mHttpGetEntity = new HttpGet(imageUrl);
HttpResponse response;
try {
    response = httpClient.execute(mHttpGetEntity);
    XmlPullParser xpp = XmlPullParserFactory.newInstance().newPullParser();       
    InputStream is = response.getEntity().getContent();
    xpp.setInput(is, "UTF-8");
    // use xpp for process
    imgView.setImageBitmap(BitmapFactory.decodeStream(is));        
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Как я могу заставить это работать даже с Android 3.0 выше. Пожалуйста посоветуй.


person Girish K.N.    schedule 31.03.2012    source источник


Ответы (1)


ваш код отлично работает на моем 4.0. Я бы сказал, что не беспокойтесь о 3.0, так как это нестабильная версия, никто не будет ее использовать.

person Win Myo Htet    schedule 31.03.2012
comment
Я пробовал в Google Nexus и Galaxy Tab 10.1, в обоих случаях это не работает. В чем тогда может быть дело? - person Girish K.N.; 31.03.2012
comment
у вас есть разрешение на подключение к интернету? когда я впервые тестирую это в своем тестовом приложении, я получаю то же самое, а затем я вспоминаю, что мне нужно разрешение на доступ в Интернет. Я использую это изображение ikailansays.files.wordpress.com/2008/12/n506957763_68091. jpg это не я... - person Win Myo Htet; 31.03.2012
comment
да, разрешение отсутствовало в образце приложения, которое я создал для публикации здесь! Но проблема все еще существует с моим приложением, которое требует дополнительной задачи анализа ответа. обновил мой код выше - person Girish K.N.; 31.03.2012
comment
Хорошо .. Я понял строку, вызывающую проблему. Это в xpp.setInput(есть, UTF-8); Я думаю, что xpp.setInput изменяет содержимое InputStream 'is', что является причиной моей проблемы. Когда я закомментировал эту строку кода, она работает нормально. Но я не уверен, как тот же оригинальный код отлично работает в Android 2.x!! Теперь, как я могу загрузить изображение из InputStream, а также проанализировать его с помощью XmlPullParser? - person Girish K.N.; 31.03.2012
comment
О чем ты говоришь? XmlPullParser ? если вы снова посмотрите на свой вопрос, вы никогда не упоминаете о XML, кроме ImageView и null. если вы не знаете, как задать правильный вопрос, вы не получите ответа. Также часто задаваемые вопросы stackoverflow, один вопрос для одной проблемы, чтобы сделать вопрос актуальным для других. теперь, когда у вас есть решение нулевой проблемы, отметьте этот вопрос как ответ и задайте новый вопрос для Xml. - person Win Myo Htet; 31.03.2012
comment
извините за путаницу и беспокойство! Поскольку я не был уверен, что вызвало мою проблему, я подумал о публикации минималистического кода, а не о размещении всего, что разбросано по классам в моем проекте. Спасибо за ценные ответы! - person Girish K.N.; 04.04.2012