我有一个本地html页面以及它所指向的其他几个资源(css文件和Javascript库),我想加载到WebView中 . 怎么能实现这一目标?
也许不是最好的方式,但我还在试验 .
可能这个样本可以帮助:
WebView lWebView = (WebView)findViewById(R.id.webView); File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>"); lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
最简单的方法可能是将您的网络资源放入 assets folder 然后调用:
webView.loadUrl("file:///android_asset/filename.html");
用于Java和Webview之间的完整通信See This
更新:资产文件夹通常是以下文件夹: <project>/src/main/assets 可以在 <app>.iml file 中的资产文件夹配置设置中更改为:
<project>/src/main/assets
<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” /> 见文章Where to place the assets folder in Android Studio
<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />
在这种情况下,使用 WebView#loadDataWithBaseUrl() 优于 WebView#loadUrl() !
WebView#loadDataWithBaseUrl()
WebView#loadUrl()
webView.loadDataWithBaseURL(url, data, "text/html", "utf-8", null);
url:url / path指向所有JavaScript文件和html链接的目录的字符串 . 如果为null,则为:空白 . data:包含hmtl文件的字符串,例如,使用BufferedReader读取
更多信息:WebView.loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
3 回答
可能这个样本可以帮助:
最简单的方法可能是将您的网络资源放入 assets folder 然后调用:
用于Java和Webview之间的完整通信See This
更新:资产文件夹通常是以下文件夹:
<project>/src/main/assets
可以在 <app>.iml file 中的资产文件夹配置设置中更改为:<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />
见文章Where to place the assets folder in Android Studio在这种情况下,使用
WebView#loadDataWithBaseUrl()
优于WebView#loadUrl()
!url:url / path指向所有JavaScript文件和html链接的目录的字符串 . 如果为null,则为:空白 . data:包含hmtl文件的字符串,例如,使用BufferedReader读取
更多信息:WebView.loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)