Android — Отображение изображения из URL в textview

#java #android

#java #Android

Вопрос:

Я пытаюсь поместить изображение с URL-адреса и отобразить его в textview. когда я использую вариант 2, изображение отображается идеально,

но в случае 1 нет. ошибка «неизвестный протокол: данные» и «W / AwContents: ошибка nativeOnDraw; очистка до цвета фона»

         //case 1
//          String base_url = "<p>Image 1 : <img src="data:image/jpeg;base64,/9j/4AAQSk...

        //case 2
        String base_url = "<p>Image 1 : <img src="http://example.com/android/tryout/logo.png"></img></p>";

        Spanned span2 = Html.fromHtml(base_url,getImageHTML(),null);

        TextView tv = (TextView)findViewById(R.id.target);
        tv.setText(span2);
  

и это моя функция

 public Html.ImageGetter getImageHTML() {

    Html.ImageGetter imageGetter = new Html.ImageGetter() {
        public Drawable getDrawable(String source) {
            try {
                Drawable drawable = Drawable.createFromStream(new URL(source).openStream(), "src");
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());

                return drawable;
            } catch(IOException exception) {
                Log.v("IOException", exception.getMessage());
                return null;
            }
        }
    };

    return imageGetter;
}
  

Спасибо за ответ.

Комментарии:

1. внутри getDrawable вы должны декодировать свой текст base64, если source он начинается с «данные: изображение / jpeg»

2. о, я понимаю. как я могу расшифровать это, сэр?

3. извините, я полностью новичок в Android. я пробую этот код, но приложение перестало работать byte[] decodedString = Base64.decode (источник, Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString. длина); Drawable drawable = Drawable.createFromStream(новый URL(декодированный байт. toString()).openStream(), «src»); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); возвращает drawable;

4. смотрите Base64InputStream

5. все еще появляется ошибка