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(); } } });