206 votes

Charger le fichier HTML dans le WebView

J'ai une page html locale ainsi que plusieurs autres ressources pointées par elle (fichiers css et bibliothèques Javascript) que je voudrais charger dans un WebView . Comment cela peut-il être réalisé ?

Ce n'est peut-être pas la meilleure façon de procéder, mais je suis encore en train d'expérimenter.

0 votes

Pour moi, cela a fonctionné si j'ai supprimé le point html -webView.loadUrl("file:///android_asset/filename") ;

5 votes

Y a-t-il une raison pour laquelle vous ne voulez pas accepter la réponse de @Joe ?

373voto

Joe Points 2291

Le moyen le plus simple serait probablement de placer vos ressources web dans le répertoire dossier d'actifs alors appelez :

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 Cela peut être modifié dans le paramètre de configuration du dossier d'actifs dans votre système de gestion des ressources. <app>.iml fichier comme :

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> Voir l'article Où placer le dossier des actifs dans Android Studio

6 votes

Ce problème est en fait une FAQ.

0 votes

Quels autres moyens y aurait-il ?

2 votes

Vous pourriez probablement aussi le charger sous forme de String si vous êtes très opposé à l'utilisation d'actifs...(voir stackoverflow.com/questions/4543349/load-local-html-in-webview )

30voto

Ajesh Points 61

Cet échantillon pourrait probablement vous 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());

3 votes

Dans l'exemple qui a le html dans la mémoire externe, il est préférable de l'emballer dans l'application.

1 votes

"file:///" est important lorsque l'on utilise un fichier HTML à partir du répertoire du dispositif local. Merci

6voto

khaintt Points 695

Dans ce cas, l'utilisation de WebView#loadDataWithBaseUrl() est meilleur que WebView#loadUrl() !

webView.loadDataWithBaseURL(url, 
        data,
        "text/html",
        "utf-8",
        null);

url : Chaîne url/path pointant vers le répertoire où tous vos fichiers JavaScript et liens html ont leur origine. Si null, c'est about:blank. données : String contenant votre fichier hmtl, lu avec BufferedReader par exemple.

Plus d'informations : WebView.loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)

5 votes

Qu'est-ce que données variable ? Veuillez fournir un exemple.

1voto

Jimale Abdi Points 169

La réponse acceptée ne fonctionne pas pour moi, Voici ce qui fonctionne pour moi

WebSettings webSetting = webView.getSettings();
    webSetting.setBuiltInZoomControls(true);
    webView1.setWebViewClient(new WebViewClient());

   webView.loadUrl("file:///android_asset/index.html");

1voto

Amanpreet Singh Points 81

Fichier de mise en page XML :

<WebView android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/webView"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".activities.Bani9">
</WebView>

Code Java :

public class Bani9 extends AppCompatActivity {
    WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bani9);
        webView = findViewById(R.id.webView);
        WebSettings webSetting = webView.getSettings();
        webSetting.setBuiltInZoomControls(true);
        webView.setWebViewClient(new WebViewClient());

        webView.loadUrl("file:///android_asset/punjabi/bani9.html");
    }
}

Assurez-vous d'avoir défini le chemin d'accès au fichier avec précision. Make sure you set File Path properly

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X