将 HTML 文件加载到 WebView

Posted

技术标签:

【中文标题】将 HTML 文件加载到 WebView【英文标题】:Load HTML file into WebView 【发布时间】:2011-08-10 14:40:10 【问题描述】:

我有一个本地 html 页面以及它指向的其他几个资源(css 文件和 javascript 库),我想将它们加载到 WebView 中。这怎么可能实现?

也许不是最好的方法,但我仍在尝试。

【问题讨论】:

对我来说,如果我删除了点 html -webView.loadUrl("file:///android_asset/filename"); 有什么理由不想接受@Joe 的回答? 【参考方案1】:

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

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

Java与Webview的完整通信See This

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

<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> 见文章Where to place the assets folder in Android Studio

【讨论】:

这个问题真的是一个FAQ。 如果您对使用资产非常不利,您也可以从字符串中加载它...(请参阅***.com/questions/4543349/load-local-html-in-webview) 这应该被标记为正确答案,因为它确实是。 @SK9 如果缺少任何其他资产或预期文件,同样适用,例如,如果您更改起始活动类的名称并且不更新 AndroidManifest.xml 以反映这一点。 (就个人而言,我建议将 URL/文件路径放在字符串资源中并从那里访问它,以便该路径与程序的所有其他字符串数据一起使用,但这与资产/资源依赖。) 不知道怎么创建assets文件夹的朋友,右键“app”->“New”->“Folder”->“Assets Folder”,点击“Finish”。 Android Studio 将在正确的路径中创建资产文件夹。您只需将 html 文件移动到新的资产文件夹即可。参考:***.com/questions/18302603/…【参考方案2】:

这个样本可能会有所帮助:

  WebView lWebView = (WebView)findViewById(R.id.webView);
  File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
  lWebView.loadUrl("file:///" + lFile.getAbsolutePath());

【讨论】:

在示例中,外部内存中有 html,最好将其打包在应用程序中 "file:///" 在使用本地设备目录中的 HTML 文件时很重要。谢谢【参考方案3】:

在这种情况下,使用WebView#loadDataWithBaseUrl() 比使用WebView#loadUrl() 更好!

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

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

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

【讨论】:

什么是数据变量?请举个例子。【参考方案4】:

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

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

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

【讨论】:

你的手机是什么版本的?【参考方案5】:

XML 布局文件:

<WebView android:layout_
    android:layout_
    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>

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

确保准确设置文件路径。

【讨论】:

以上是关于将 HTML 文件加载到 WebView的主要内容,如果未能解决你的问题,请参考以下文章

将 HTML 文件加载到 WebView

将文本文件从手机存储加载到 HTML textarea

我可以使用 Xcode 将文件写入 HTML 文件,然后将其加载到 Web 视图中吗?

将 HTML 文件加载到输出流

将一个 HTML 文件加载到另一个

将视频文件从 torrent 加载到 html5 视频