女神镇楼
时间紧,不说废话了。
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要写在页面上才会被调用到。这可能是个坑~