J'ai essayé des exemples, des démos de codes Google et d'autres ressources avec WebView
, mais lorsque j'essaie de le faire dans mon propre code, cela ne fonctionne pas pour moi.
Je veux charger myfile.html
ce que j'ai mis dans le dossier des actifs et en utilisant:
private WebView myWebView;
myWebView.loadUrl("file:///android_assets/myfile.html");
Sur l'émulateur affiche une erreur
file:///android_assets/myfile.html
Impossible de charger la page Web à l'adresse: Le fichier demandé est introuvable./android_assets/myfile.html
Lorsque je place ce fichier dans un res/raw/
dossier et que j'utilise:
myWebView.loadUrl("file:///android_res/raw/myfile.html");
alors seul l'émulateur Android 2.2 API niveau 8 peut charger le fichier probablement, d'autres versions plus anciennes montrent la même erreur. Est-ce que je manque quelque chose?
Existe-t-il un moyen de charger un fichier .html existant dans le package d'application qui fonctionne sur toutes les versions d'API?
raw
n'a pas fonctionné. J'aurais utilisé pourraw-de
,raw-fr
et ainsi de suite. Maintenant, je dois le faire moi-même.collez votre fichier .html dans le dossier assets de votre dossier de projet. et créez un fichier xml dans le dossier layout 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 du code fol dans l'activité
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.
la source
Si votre structure doit être comme ceci:
/assets/html/index.html
/assets/scripts/index.js
/assets/css/index.css
Ensuite, faites simplement ( Android WebView: gestion des changements d'orientation )
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 d'ajouter
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, utilisez simplement les URL
<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">
la source
Copiez et collez votre fichier .html dans le dossier des ressources de votre projet et ajoutez le code ci-dessous 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);
la source
Vous pouvez lire le fichier html manuellement, puis utiliser les méthodes
loadData
ouloadDataWithBaseUrl
de WebView pour l'afficher.la source
La compilation de débogage est différente de celle de la version , donc:
Considérez votre structure de fichier de projet comme ça [ ce cas si pour un assemblage de débogage ]:
src | debug | assets | index.html
Vous devez appeler index.html dans votre WebView comme:
web.loadUrl("file:///android_asset/index.html");
Ainsi de suite, pour l'assemblage Release, cela devrait ressembler à:
src | release | assets | index.html
src | main | assets | index.html
la source