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