ОК, благодаря ответу mufumbo я нашел работающий хак для смешивания локальных ресурсов в удаленно загружаемых HTML-страницах. Страницы, загруженные с помощью метода loadUrl()
WebView, не загружают изображения, связанные с файлом: /// android_asset / ... В качестве обходного пути вы можете получить страницу HTML, используя org.apache.http.client.methods.HttpGet.HttpGet()
, а затем передать ее в WebView с помощью loadDataWithBaseURL()
. В этом случае WebView загрузит ресурсы, связанные с файлом: /// android_asset /, а также изображения и сценарии через HTTP. Вот мой настроенный код веб-просмотра:
public class CustomWebView extends WebView {
private String mURL;
public void loadUrlWithAssets(final String url) {
// copy url to member to allow inner classes accessing it
mURL = url;
new Thread(new Runnable() {
public void run() {
String html;
try {
html = NetUtil.httpGETResponse(mURL);
// replace some file paths in html with file:///android_asset/...
loadDataWithBaseURL(mURL, html, "text/html", "UTF-8", "");
}
catch (IOException e) {
Log.e("CustomWebView.loadUrlWithAssets", "IOException", e);
}
}
}).start();
}
}
Обратите внимание, что вся выборка http заключена в домашний класс утилит NetUtil
.
С помощью этого класса можно отображать HTML-страницы с веб-сервера и иметь некоторые статические ресурсы, такие как изображения или таблицы стилей, загруженные из папки ресурсов приложения, чтобы повысить скорость загрузки и сохранить пропускную способность.