Ich habe eine lokale HTML-Seite zusammen mit mehreren anderen Ressourcen (CSS-Dateien und Javascript-Bibliotheken), auf die ich in eine WebView laden möchte. Wie könnte dies erreicht werden?
Vielleicht nicht die beste Vorgehensweise, aber ich experimentiere immer noch.
Am einfachsten wäre es wahrscheinlich, Ihre Webressourcen in den Ordner assets zu verschieben und dann Folgendes aufzurufen:
webView.loadUrl("file:///Android_asset/filename.html");
Für eine vollständige Kommunikation zwischen Java und Webview See This
Update: Der Assets-Ordner ist normalerweise der folgende Ordner: <project>/src/main/assets
Dies kann in der Konfigurationseinstellung des Assets-Ordners in Ihrer <app>.iml
-Datei geändert werden als:
<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />
Siehe Artikel Speicherort des Assets-Ordners in Android Studio
wahrscheinlich könnte dieses Beispiel helfen:
WebView lWebView = (WebView)findViewById(R.id.webView);
File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
In diesem Fall ist die Verwendung von WebView#loadDataWithBaseUrl()
besser als WebView#loadUrl()
!
webView.loadDataWithBaseURL(url,
data,
"text/html",
"utf-8",
null);
url: url/path Zeichenfolge, die auf das Verzeichnis verweist. Alle Ihre JavaScript-Dateien und HTML-Links haben ihren Ursprung. Wenn null, ist es ungefähr: leer. data: String, der Ihre hmtl-Datei enthält, zum Beispiel mit BufferedReader gelesen
Weitere Informationen: WebView.loadDataWithBaseURL (Java.lang.String, Java.lang.String, Java.lang.String, Java.lang.String, Java.lang.String)
Die akzeptierte Antwort funktioniert bei mir nicht. Das funktioniert bei mir
WebSettings webSetting = webView.getSettings();
webSetting.setBuiltInZoomControls(true);
webView1.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///Android_asset/index.html");