WebView访问网页直接
webView.loadUrl(“http://baidu.com”);即可,但是这是打开系统的浏览器。
我们需要继承WebViewClient然后重写
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
atv.webView.loadUrl(url);
return true;
}
我们想要与js进行交互时需要获取WebSetting对象
<span style="white-space:pre"> </span>WebSettings webSettings = webView.getSettings();
webSettings.setSaveFormData(false);
// 设置WebView属性,能够执行javaScript脚本
webSettings.setJavaScriptEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
webSettings.setSupportZoom(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webView.addJavascriptInterface(this, "demo");
//网页端回调我们方法时我们需要添加
@JavascriptInterface 不然会找不到这个方法
如果你的应用有多个WebView,并且网页端会调用多个相同的方法,我们可以写在一个通用的类中,把公共的方法写进去,不要自定义WebView,这涉及到WebView在Fragment使用中返回的问题,自定义WebView设置这段代码无效
webview.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) { //表示按返回键 时的操作
webview.goBack(); //后退
return true; //已处理
}
}
return false;
}
});