项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下。
首先,启用JS支持
//启用js支持
webSettings.setJavaScriptEnabled(true);
1. JS调用Native方法
// JS调用Native方法
mWebView.addJavascriptInterface(new JsInterface(), "android"); // "android"是js那边调用Java方法时的一个“句柄”或者引用,跟h5约定好,可以写成别的。android.openUrlByBrowser()
public class JsInterface {
@JavascriptInterface
public void backpage() { // 无返回值,无参
finish();
} @JavascriptInterface
public void openUrlByBrowser(String url) { // 无返回值,有参
openBrowser(url);
} @JavascriptInterface
public boolean haszhifubao() { // 有返回值
return AppPackageChecked.isExist(WebShowActivity.this, "com.eg.android.AlipayGphone");
} }
2. Native调用JS方法
private void pauseVideo() {
mWebView.loadUrl("javascript:pauseVideo()"); // pauseVideo()是H5那边定义好的
}
使用时Android直接调用pauseVideo()就好了
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.left_layout:
pauseVideo();
finish();
break;
}
}
基本就是这些。