Android WebView JavaScript z zasobów
Jak mogę sprawić, aby JavaScript i obrazy na mojej zdalnej stronie HTML były ładowane z folderu assets (lub dowolnego lokalnego zasobu)?
2 answers
Odpowiedź:
1. Musisz załadować kod HTML do ciągu znaków:
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. Wczytaj WebView z bazowym adresem URL:
String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");
W tym konkretnym przypadku powinieneś mieć wszystko .Pliki js, których chcesz użyć na stronie, znajdują się gdzieś w folderze "zasoby" projektu. Na przykład:
/MyProject/assets/jquery.min.js
3. W zdalnej stronie html musisz załadować.js i .pliki css, które znajdują się w Twojej aplikacji, takie jak:
<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script>
To samo dotyczy wszystkich innych lokalnych zasobów, takich jak obrazy itp. ich ścieżka musi zaczynać się od
file:///android_asset/
WebView najpierw załaduje surowy HTML, który podałeś jako ciąg znaków, a następnie wybierze .js,css i inne lokalne zasoby, a następnie załaduje zdalną zawartość.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-24 14:36:21
Jeśli dynamicznie tworzysz swój HTML, a następnie korzystasz z loadDataWithBaseURL, upewnij się, że wszelkie lokalne zasoby, np. javascript w folderze assets, są określane w HTML jako plik:/// (spędziłem wiele godzin nad tym pracując)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-03 18:36:07