Intereting Posts
Невозможно скомпилировать приложение Android с ActionBarSherlock как apklib в maven Как создать графический интерфейс в Android вместо использования XML? Пользовательские представления Android с Kotlin Android: как найти абсолютный путь к папке с ресурсами? Как обнаружить нажатие кнопки «Недавние приложения» (Honeycomb +) Как писать на консоль с android с помощью eclipse Как нажимать элементы Action Bar при тестировании на Android Espresso? Как определить размер макета? JavaPoet + Android Studio "addModifiers (модификатор) нельзя применить к модификатору" Android SDK Version 25 – android.support v7: 25 дает «Ресурс не найден, который соответствует @ color / hint_foreground_material_light» Adobe Creative SDK? WebView clearHistory () в функции web-браузера canGoback ()? Реализация панели действий: ABSherlock или ABCompat? Keep Action Bar Стабильный во время анимации перехода на активность Android Facebook SDK 3.0 Session State «Открытие» Как настроить заголовок с помощью метода http post

Android FileNotFound Exception – не может getInputStream с URL-адреса изображения, у которого нет формата файла

Название довольно понятно.

Следующий код …:

URL imageUrl = new URL(url); try { HttpURLConnection conn= (HttpURLConnection)imageUrl.openConnection(); conn.setDoInput(true); conn.connect(); int length = conn.getContentLength(); InputStream is = conn.getInputStream(); return BitmapFactory.decodeStream(is); } catch (IOException e) { e.printStackTrace(); } 

Не удалось, если URL-адрес не содержит формат файла. Например, некоторые изображения, размещенные в google, будут отображать изображение, но не имеют формат файла (.png, .jpg и т. Д.) Как часть URL-адреса.

В результате заголовок типа содержимого URL-соединения возвращает «text / html». Я считаю, что это проблема.

Я попытался установить новый заголовок типа контента, но это ничего не меняет.

Кто-нибудь знает обходное решение?

Благодарю.

Я столкнулся с проблемами, и я вспомнил, как гуглинг, и это было мое окончательное решение

  try { URL url = new URL(imageUrl); HttpGet httpRequest = null; httpRequest = new HttpGet(url.toURI()); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); InputStream input = bufHttpEntity.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(input); ImageActivity.this.i.setImageBitmap(bitmap); ImageActivity.this.i.refreshDrawableState(); input.close(); } catch (MalformedURLException e) { Log.e("ImageActivity", "bad url", e); } catch (Exception e) { Log.e("ImageActivity", "io error", e); } 

BitmapFactory.decodeStream только считывает исходный поток байтов самого изображения, он не знает о URL-адресе и кодировке содержимого, поэтому я не думаю, что они виноваты здесь. Он должен иметь возможность считывать формат изображения непосредственно из заголовка изображения.

Вероятно, URL-адрес перенаправляется.