web-dev-qa-db-fra.com

Charger un fichier HTML dans WebView

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.

177
klaus johan

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

333
Joe

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());
23
Ajesh

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)

6
khaintt

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");
0
Jimale Abdi