实现Android原生native和h5通信JSBridge

691 阅读1分钟

github.com/gzsll/WebVi… 实现Android原生native和h5通信 注意:如果加入下面的代码会阻止js通信。使jsBridge失效。切记

webView.setWebViewClient(new WebViewClient() {// 会阻碍jsbridge
    @Override

    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        LogUtils.d("onReceivedSslError", "页面加载ssl onReceivedSslError = " + error.toString());
        handler.proceed();//忽略证书的错误继续Load页面内容,不会显示空白页面
    }
});

如果实在想加可以加如下:

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        if (error.getPrimaryError() == SslError.SSL_DATE_INVALID  // 日期不正确
                || error.getPrimaryError() == SslError.SSL_EXPIRED // 日期不正确
                || error.getPrimaryError() == SslError.SSL_INVALID // webview BUG
                || error.getPrimaryError() == SslError.SSL_UNTRUSTED) { // 根证书丢失
            if (chkMySSLCNCert(error.getCertificate())) {
                handler.proceed();  // 如果证书一致,忽略错误
            }
        }
    }
    ```
原理分析:
通过library下的assets/WebViewJavascriptBridge.js
然后重写:WVJBWebView(Webview)、WVJBWebViewClient(WebViewClient)来实现。