webview与H5 交互

implementation 'com.github.lzyzsd:jsbridge:1.0.4'

H5调android

webview.registerHandler("方法名", new

        BridgeHandler() {

            @Override
            public void handler(String data, CallBackFunction function) {

                function.onCallBack("参数");
            }

        });

Android 调H5

webview.callHandler("方法明", "", new

        CallBackFunction() {

            @Override
            public void onCallBack(String data) {
                // TODO Auto-generated method stub
          
            }

        });

设置

 webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        webview.getSettings().setDomStorageEnabled(true);
        webview.getSettings().setDatabaseEnabled(true);
        webview.getSettings().setAllowFileAccess(true);
        webview.getSettings().setSavePassword(true);
//      webview.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setBlockNetworkImage(false);
        webview.getSettings().setAppCacheEnabled(true);
        webview.getSettings().setAllowFileAccess(true);
        webview.setDefaultHandler(new DefaultHandler());
        webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
        webview.setWebChromeClient(new WebChromeClient());
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
            webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
        if (Build.VERSION.SDK_INT >= 19) {
            webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        } else {
            webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        }

判断是否加载完成

webview.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress) {
        if (progress == 100) {
            //加载完成
         
//加载完成执行的方法
            loading.dismiss();

        }
    }
});

你可能感兴趣的:(webview与H5 交互)