WebView与H5那些事儿

一、WebView基本用法
1 .通过webView来加载html页面的用法:
//例如:加载assets文件夹下的test.html页面
mWebView.loadUrl("file:///android_asset/test.html")
//例如:加载网页
mWebView.loadUrl("http://www.baidu.com")

注意:一般会在App内部打开网页,否则,会在你手机默认的浏览器上打开。同时,使App的标题显示H5页面的标题。设置WebViewClient:

webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {//设置App内部打开网页
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {//设置标题
                tv_title.setText(view.getTitle());

            }
 });
2. WebVIew访问https协议请求(使用ssl加密的url)。如果不经过处理,页面显示空白。而使用系统自带的浏览器打开时,会弹出确认证书的对话框。需要的处理是重写WebViewClient类的onReceivedSslError方法,如下:

 @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();
            }

二、WebView与H5交互
前提:调用js方法那么就必须让webView支持
WebSettings webSettings = mWebView.getSettings();
    //设置为可调用js方法
    webSettings.setJavaScriptEnabled(true);
1  Android本地调用HTML页面中的JavaScript方法
//若调用的js方法没有返回值 do()方法为JS的方法
mWebView.loadUrl("javascript:do()");

//有返回值
mWebView.evaluateJavascript("do(1,2)", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String value) {
            Log.e(TAG, "onReceiveValue value=" + value);
        }
    });
2. js调用Android本地Java方法
首先,定义一个Java类:
public class JsInteration {
    @JavascriptInterface //Android4.2以上可以直接使用@JavascriptInterface注解来声明
    public String back() {
        return "hello world";
    }
}
然后,在js调用Android中的方法
//第一个参数是 供给js调用的类,第二个参数是js中要用到的调用这个类中的方法的对象,可以随便起
mWebView.addJavascriptInterface(new JsInteration(), "android");
问题:有时候会遇见Js调用android方法无效。解决方法:
你可需要加上注解:@SuppressLint("SetJavaScriptEnabled")

猜你喜欢

转载自blog.csdn.net/xufei5789651/article/details/69566985