Question

J'ai fait des échantillons d'essai, des démonstrations de codes Google et d'autres ressources avec WebView, mais lorsque je tente de le faire dans mon propre code, il ne fonctionne pas pour moi.

Je veux charger myfile.html que je mets dans le dossier des actifs, et en utilisant:

private WebView myWebView;

myWebView.loadUrl("file:///android_assets/myfile.html");

En cas d'erreur SHOWS de l'émulateur

  

La page Web à l'adresse file:///android_assets/myfile.html ne pouvait pas être   chargé comme: Le fichier demandé n'a pas été trouvé.   /android_assets/myfile.html

Quand je mets ce fichier dans le dossier res/raw/ et en utilisant:

myWebView.loadUrl("file:///android_res/raw/myfile.html");

alors que l'émulateur Android 2.2 niveau de l'API 8 peut charger le fichier probablement, d'autres versions plus anciennes montrent la même erreur. Est-ce que je manque quelque chose?

Est-il possible de charger un fichier .html existant dans le package d'application qui fonctionne sur toutes les versions de l'API?

Était-ce utile?

La solution

ok, ce fut mon erreur stupide. Je posterai la personne réponse ici juste cas a le même problème.

Le chemin correct pour les fichiers stockés dans le dossier des actifs est file:///android_asset/* (sans « s » pour les actifs dossier que je pensais toujours qu'il doit avoir un « s »).

Et, travaille mWebView.loadUrl("file:///android_asset/myfile.html"); sous tous les niveaux de l'API.

Je comprends toujours pas pourquoi mWebView.loadUrl("file:///android_res/raw/myfile.html"); ne fonctionne que sur le niveau de l'API 8. Mais il n'a pas d'importance maintenant.

Autres conseils

coller votre fichier .html dans le dossier actif de votre dossier de projet. et créer un fichier xml dans le dossier de mise en page avec le code fol: my.xml:

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/webview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
    />

Ajouter un code de l'activité fol

setContentView(R.layout.my);
    WebView mWebView = null;
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("file:///android_asset/new.html"); //new.html is html file name.

Si votre structure doit ressembler à ceci:

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

Alors il suffit de faire ( Android WebView: changements d'orientation de manipulation )

    if(WebViewStateHolder.INSTANCE.getBundle() == null) { //this works only on single instance of webview, use a map with TAG if you need more
        webView.loadUrl("file:///android_asset/html/index.html");
    } else {
        webView.restoreState(WebViewStateHolder.INSTANCE.getBundle());
    }

Assurez-vous que vous ajoutez

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
    }

Ensuite, il suffit d'utiliser urls

<html>
<head>
    <meta charset="utf-8">
    <title>Zzzz</title>
    <script src="../scripts/index.js"></script>
    <link rel="stylesheet" type="text/css" href="../css/index.css">

Copiez et collez votre fichier .html dans les actifs dossier de votre projet et ajoutez ci-dessous le code dans votre activité sur onCreate ().

        WebView view = new WebView(this);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl("file:///android_asset/**YOUR FILE NAME**.html");
        view.setBackgroundColor(Color.TRANSPARENT);
        setContentView(view);

Vous pouvez lire le fichier html utiliser manuellement et méthodes de loadData ou loadDataWithBaseUrl de WebView pour le montrer.

débogage compilation est différent du version un, donc:

Considérez votre structure de fichiers de projet comme [ ce cas, si un assemblez Debug ]:

src
  |
  debug
      |
      assets
           |
           index.html

Vous devriez appeler index.html dans votre WebView comme:

WebView web=(WebView)findViewById(R.id.web);
web.loadUrl("file:///android_asset/index.html");

La mise en page:

<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"/>

ainsi de suite, pour l'assemblage de presse, il devrait être comme:

src
  |
  release
        |
        assets
             |
             index.html  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top