Можно ли отображать изображение с помощью метода loadDataWithBaseURL () в android?

Я пытаюсь отобразить содержимое html-файла с помощью loadDataWithBaseURL() метод в android.

У меня просто есть строка, содержащая данные Html-файла в одной строке с именем source, а затем я передаю это методу.

для электронной.г

String source; //contain html tags with images
View.loadDataWithBaseURl(null,source,"text/html","UTF-8","about:blank");

данные, отображаемые в представлении в порядке. Моя проблема в том, что если мой html-файл содержит какие-либо изображения, я не могу его отобразить? как я могу это сделать?

4 ответов


вы можете сделать это, если изображения в источнике используют относительные местоположения для src, то вам нужно установить baseUrl в" базу", где будут расположены изображения. например, если вы загружаете домашнюю страницу google из источника, она будет выглядеть так:

View.loadDataWithBaseURI("http://google.com",source,"text/html","UTF-8","about:blank");

Это сообщает webview, откуда будут загружены изображения.

в качестве примечания я не думаю, что" file:// " URIs работает в веб-представлении по соображениям безопасности.


использовать " файл: / / / android_res / raw/ " в качестве базового URL и поместите свои файлы в res / raw в вашем проекте.

res / raw / index.HTML-код

res / raw / image.формат JPG

InputStream htmlStream = getResources().openRawResource(R.raw.index);
Reader is = new BufferedReader(new InputStreamReader(htmlStream, "UTF8"));

// read string from reader
String html = readFile(is);

webView.loadDataWithBaseURL("file:///android_res/raw/", html, 
                            "text/html", "UTF-8", null);

Я сделал учебник о том, как использовать метод loadDataWithBaseURL() для отображения изображений - http://lomza.totem-soft.com/tutorial-using-webview-to-load-the-html-page-from-assets/#header


например, если вы хотите использовать некоторые изображения с sdcard, то ваш код должен быть таким:

final String path = Environment.getExternalStorageDirectory() + File.separator + "YourFolderName"); bookView.loadDataWithBaseURL("file://" + path, htmlTextWithHeadAndBody, "text/html", "UTF-8", "");