用Android WebView加载现有的.html文件

我曾尝试使用WebView从Google代码和其他资源中尝试示例,演示,但是当我尝试在自己的代码中执行代码时,它不适用于我。

我想加载myfile.html ,我把资产文件夹,并使用:

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

在模拟器上显示错误

file:///android_assets/myfile.html的网页无法加载为:未find请求的文件。 /android_assets/myfile.html

当我把这个文件res/raw/文件夹,并使用:

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

那么只有模拟器的android 2.2 API级别8可能会加载该文件,其他旧版本显示相同的错误。 我错过了什么?

有什么方法可以在适用于所有API版本的应用程序包中加载现有的.html文件?

好吧,那是我非常愚蠢的错误。 我在这里发布答案,以防万一有人有同样的问题。

资产文件夹中存储文件的正确path是file:///android_asset/* (资产文件夹没有“s”,我一直认为它必须有“s”)。

而且, mWebView.loadUrl("file:///android_asset/myfile.html"); 在所有API级别下工作。

我仍然不知道为什么mWebView.loadUrl("file:///android_res/raw/myfile.html"); 仅适用于API级别8,但现在没关系。

将您的.html文件粘贴到项目文件夹的assets文件夹中。 并使用以下代码在布局文件夹中创build一个xml文件: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" /> 

在活动中添加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. 

将.html文件复制并粘贴到项目的assets文件夹中,并在onCreate()的Activity上添加下面的代码。

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

如果你的结构应该是这样的:

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

然后,只要( Android WebView:处理方向更改 )

  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()); } 

确保你添加

  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); } 

然后只需使用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"> 

您可以手动读取html文件,然后使用WebView的loadDataloadDataWithBaseUrl方法来显示它。

另外请确保你不要忘记:

<uses-permission android:name="android.permission.INTERNET" />