将 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的主要内容,如果未能解决你的问题,请参考以下文章