女神镇楼
时间紧,不说废话了。
1、设置WebView支持js
settings.setJavaScriptEnabled(true); 2、添加js接口 wv_view.addJavascriptInterface(new JSInterface(), "Android"); 3、为WebView设置Client wv_view.setWebChromeClient(new WebChromeClient()); wv_view.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) { //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 view.loadUrl(url); return true; } });4、和h5定义接口方法譬如
private class JSInterface { //JS需要调用的方法 @JavascriptInterface public void onClickBack(String id){ //返回 H5Activity.this.finish(); } }5、Android调用H5 //有返回值 wv_view.evaluateJavascript("javascript:getimg()", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { ToastUitl.showShort(value); } }); String jsStr = "javascript:geTimg(\"" + sb.toString() + "\")";//有参数 wv_view.loadUrl(jsStr); // wv_view.loadUrl("javascript:getimg()");//没参数 注意:js方法里的参数,别忘了""。还有一点要非常注意的是:一定要在UI线程中调用!可以用Handler或者runOnUiThread方法处理。注意:js方法里的参数别忘了""。还有一点要非常注意的是:一定要在UI线程调用!可以使用Handler或者runOnUIThread方法处理。我这边有一个情况是:当h5有多层页面时,js要写在页面上才会被调用到。这可能是个坑~