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

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

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

【问题讨论】:

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

标签: android android-webview local


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

确保准确设置文件路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2011-07-19
    • 2023-04-03
    相关资源
    最近更新 更多