Android HTML ImageGetter как AsyncTask


1 Answers

Довольно приятно. Однако тип DefaultHttpClient устарел. Попробуйте это по методу выборки:

private InputStream fetch(String urlString) throws MalformedURLException, IOException {

        URL url = new URL(urlString);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        InputStream stream = urlConnection.getInputStream();

        return stream;

    }
Question

Хорошо, я теряю рассудок над этим. У меня есть метод в моей программе, который анализирует HTML. Я хочу включить встроенные изображения, и у меня создается впечатление, что использование Html.fromHtml (string, Html.ImageGetter, Html.TagHandler) позволит это произойти.

Поскольку у Html.ImageGetter нет реализации, я должен написать ее. Однако, поскольку для разбора URL-адресов в Drawables требуется доступ к сети, я не могу сделать это в основном потоке, поэтому он должен быть AsyncTask. Я думаю.

Однако, когда вы передаете ImageGetter в качестве параметра в Html.fromHtml, он использует метод getDrawable, который должен быть переопределен. Таким образом, нет никакого способа вызвать всю сделку ImageGetter.execute, которая запускает метод doInBackground, и поэтому нет никакого способа сделать это асинхронным.

Неужели я об этом совершенно не прав, или, что еще хуже, это невозможно? благодаря




если вы используете Picasso, замените часть кода @momo на

/***
         * Get the Drawable from URL
         * @param urlString
         * @return
         */
        public Drawable fetchDrawable(String urlString) {
            try {
                Drawable drawable = fetch(urlString);
                drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(), 0
                        + drawable.getIntrinsicHeight());
                return drawable;
            } catch (Exception e) {
                return null;
            }
        }

        private Drawable fetch(String urlString) throws MalformedURLException, IOException {
            return new BitmapDrawable(c.getResources(), Picasso.with(c).load(urlString).get());
        }



Related