J'ai une page html locale ainsi que plusieurs autres ressources pointées par celle-ci (fichiers css et bibliothèques Javascript) que je souhaiterais charger dans une vue Web. Comment cela pourrait-il être réalisé ?
Ce n’est peut-être pas la meilleure façon de procéder mais j’expérimente toujours.
Le moyen le plus simple serait probablement de placer vos ressources Web dans le dossier des actifs puis d’appeler:
_webView.loadUrl("file:///Android_asset/filename.html");
_
Pour une communication complète entre Java et Webview voir ceci
Mise à jour: le dossier des actifs est généralement le dossier suivant: _<project>/src/main/assets
_ Ceci peut être modifié dans le paramètre de configuration du dossier des actifs de votre fichier <app>.iml
comme:
_<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />
_ Voir l’article Où placer le dossier d’actifs dans Android Studio
probablement cet échantillon pourrait aider:
WebView lWebView = (WebView)findViewById(R.id.webView);
File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
Dans ce cas, utiliser WebView#loadDataWithBaseUrl()
vaut mieux que WebView#loadUrl()
!
webView.loadDataWithBaseURL(url,
data,
"text/html",
"utf-8",
null);
url: url/path Chaîne pointant vers le répertoire, tous vos fichiers JavaScript et liens HTML ont leur origine. Si null, c'est à peu près: blanc. data: chaîne contenant votre fichier hmtl, lu avec BufferedReader par exemple
Plus d'infos: WebView.loadDataWithBaseURL (Java.lang.String, Java.lang.String, Java.lang.String, Java.lang.String, Java.lang.String)
La réponse acceptée ne fonctionne pas pour moi, c'est ce qui fonctionne pour moi
WebSettings webSetting = webView.getSettings();
webSetting.setBuiltInZoomControls(true);
webView1.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///Android_asset/index.html");