webview.loadData () не загружает локальные изображения

1

У меня есть html-страница, которая построена динамически. Некоторые из изображений поступают из интернет-url и других, которые я хочу загрузить из папки Assets. Страницы правильно отображают интернет-изображения, однако он просто отказывается загружать локальные изображения. Я пробовал много вариантов, включая следующие, и никто не будет загружать локальные изображения. Если все загружено из интернет-url, все страницы отображаются правильно, но я действительно не хочу идти в Интернет для статического контента, который не изменится. Есть идеи?

String pageData = "куча html разметки...";

/ / - мне пришлось удалить <из тега img ниже, чтобы получить фильтр спама на этом forum-->

/ / --try 1--> pageData + = "img src= 'file:///data/data/(мой пакет)/files/image1.png' alt= 'my image'>";

/ / --try 2--> pageData + = "img src= '/data/data/(мой пакет)/image1.png' alt= 'my image'>";

/ / --try 3--> pageData + = "img src= 'src=' data: image/jpeg; base64, '" + readAssetFileAsBase64 ("image1.png") + "' alt= 'my image'>";

/ / --try 4--> взрывчатые вещества!

Страница отображается с помощью..

webview.loadData(pageData, "текст/html", NULL);

но я тоже пробовал

webview.loadDataWithBaseURL("file://", s, "text/html", "windows-1252", null);

Я не могу использовать.loadUrl(), так как страница построена динамически. Я полагаю, что я мог бы написать динамическую страницу на диск для вызова.loadUrl(), но это не кажется настолько эффективным.

Теги:

1 ответ

4
Лучший ответ

Вам нужно убедиться, что вы загружаете html с базовым URL-адресом, хотя этот базовый URL-адрес не должен быть чем-то подходящим

webView.loadDataWithBaseURL("fake://not/needed", htmlString, mimeType, encoding, "");

а затем вы можете ссылаться на вещи в папке с ресурсами, используя что-то вроде этого

file:///android_asset/image1.jpg

путь "android_asset" кажется тем, что вы еще не пробовали. Если ваши файлы не находятся в папке с вашими активами, вам необходимо обслуживать их с помощью ContentProvider, см. Этот учебник с моего сайта: http://responsiveandroid.com/2012/02/20/serving-android-webview-resources-with- содержание-providers.html

  • 1
    На самом деле, вы можете использовать «file: /// android_asset /» в качестве первого параметра для webView.loadDataWithBaseURL, затем вы можете ссылаться на изображения в вашем html, как этот <img src = "image1.jpg">, так как базовый URL уже указано.
  • 0
    очень помог. благодарю вас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню