Как я могу заставить JavaScript и изображения на моей удаленной HTML-странице загружаться из папки с ресурсами (или только с любым локальным ресурсом)?
Android WebView JavaScript из активов
Ответ 1
Ответ:
1. Вы ДОЛЖНЫ загружать HTML в строку:
private String readHtml(String remoteUrl) {
String out = "";
BufferedReader in = null;
try {
URL url = new URL(remoteUrl);
in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
out += str;
}
} catch (MalformedURLException e) {
} catch (IOException e) {
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return out;
}
2. Загрузите WebView с базовым URL:
String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");
В этом конкретном случае вы должны иметь все файлы .js, которые вы хотите использовать на странице, где-то в папке "активы" проекта. Например:
/MyProject/assets/jquery.min.js
3. На вашей удаленной странице html вам нужно загрузить файлы .js и .css, которые находятся в вашем приложении, например:
<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script>
то же самое относится ко всем другим локальным ресурсам, таким как изображения и т.д. их путь должен начинаться с
file:///android_asset/
WebView сначала загрузит необработанный HTML-код, который вы предоставили в виде строки, затем выберите .js,.css и другие локальные ресурсы, а затем загрузит удаленный контент.
Ответ 2
Если вы динамически создаете свой HTML, а затем используете loadDataWithBaseURL, убедитесь, что любые локальные ресурсы, например. javascript в вашей папке с ресурсами упоминается в HTML как файл:///(Я потратил часы на это)