我有一个本地html页面以及它所指向的其他几个资源(css文件和Javascript库),我想加载到WebView中。怎么可以实现呢?
也许不是最好的方法,但我还在尝试。
答案 0 :(得分:326)
最简单的方法可能是将您的网络资源放入资源文件夹,然后致电:
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
答案 1 :(得分:23)
这个样本可能会有所帮助:
WebView lWebView = (WebView)findViewById(R.id.webView);
File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
答案 2 :(得分:6)
在这种情况下,使用WebView#loadDataWithBaseUrl()
优于WebView#loadUrl()
!
webView.loadDataWithBaseURL(url,
data,
"text/html",
"utf-8",
null);
url:url / path指向所有JavaScript文件和html链接的目录的字符串。如果为null,则为:空白。 data:包含hmtl文件的字符串,使用BufferedReader读取,例如
答案 3 :(得分:0)
已接受的答案对我不起作用,这对我有用
WebSettings webSetting = webView.getSettings();
webSetting.setBuiltInZoomControls(true);
webView1.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/index.html");
答案 4 :(得分:0)
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");
}
}