将HTML文件加载到WebView中


188

我有一个本地html页面以及它要指向的其他几个资源(css文件和Javascript库),我想将它们加载到WebView中。如何实现呢?

也许这不是进行下一步的最佳方法,但我仍在尝试。


对我来说,如果我将点html -webView.loadUrl(“ file:/// android_asset / filename”)删除,它会起作用。
2015年

4
您为什么不想接受@Joe的答案有任何原因吗?
ClassA

3
webview.loadUrl(“ file:///android_asset/sample.html”); - 点击这里
c49,

Answers:


349

最简单的方法可能是将您的Web资源放入资产文件夹,然后调用:

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

有关Java和Webview之间的完整通信,请参见此

更新:资产文件夹通常是以下文件夹: <project>/src/main/assets 这可以在资源文件夹配置设置在您更改<app>.iml文件为:

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> 请参阅文章将资产文件夹放置在Android Studio中的位置


6
这个问题确实是一个常见问题。
shihpeng 2011年

2
你可以假设还加载它形成一个字符串,如果你是非常不利的,使用的资产......(见stackoverflow.com/questions/4543349/load-local-html-in-webview

24
应该将其标记为正确答案,因为确实如此。
gorodechnyj 2012年

6
@ SK9如果缺少任何其他资产或预期文件,则同样适用,例如,如果您更改启动活动类的名称并且不进行更新AndroidManifest.xml以反映该名称。(就个人而言,我建议将URL /文件路径放在字符串资源中,然后从那里访问它,以便该路径与程序的所有其他字符串数据一起使用,但这实际上与资产/问题无关。资源依赖。)
JAB 2013年

7
对于那些不知道如何创建资产文件夹的用户,请右键单击“应用”->“新建”->“文件夹”->“资产文件夹”,然后单击“完成”。Android Studio将以正确的路径创建资产文件夹。而且您只需要将html文件移动到新的资产文件夹。参考:stackoverflow.com/questions/18302603/...
宇超周

27

该示例可能有助于:

  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
在外部存储器中有html的示例中,最好将其打包在应用程序中
JonathanGarcía13

1
使用本地设备目录中的HTML文件时,“ file:///”很重要。谢谢
ralphgabb19年

5

在这种情况下,使用WebView#loadDataWithBaseUrl()胜于WebView#loadUrl()

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

url:url / path指向目录的字符串,所有JavaScript文件和html链接都有其来源。如果为null,则为about:blank。数据:包含您的hmtl文件的字符串,例如,使用BufferedReader读取

更多信息:WebView.loadDataWithBaseURL(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)


3
什么是数据变量?请提供一个例子。
IgorGanapolsky '17

0

接受的答案对我不起作用,这对我有用

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

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

您的手机是什么版本?
Jimale Abdi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.