1. 客户端调用h5界面中的js方法,即客户端向h5端传递参数。
Android端代码:
webview.loadUrl("javascript:callJavaScriptMethod1()"); // 传递参数调用 webview.loadUrl("javascript:callJavaScriptMethod1(" + "'hello world'" +",'yxf'"+ ")");
注意: 1.android端代码方法名前面需要加javasript:
2.方法名字对应一致
3.参数格式。
4.参数的类型也要对应
2. H5界面调用客户端的方法,即h5端向android端传递参数(支付结果)。
Android端代码:
@SuppressLint({"JavascriptInterface", "SetJavaScriptEnabled"}) private void initWebView(String url) { WebSettings mWebSettings = wv_pay.getSettings(); mWebSettings.setJavaScriptEnabled(true);
//加上这句话才能使用javascript方法 wv_pay.setWebChromeClient(new WebChromeClient()); //如果有多个交互方法,stringName必须取名不一样,否则后写的覆盖前面的 wv_pay.addJavascriptInterface(new Object() { @JavascriptInterface//Android4.4后每个js交互方法必须要有注解 public void callAndroidMethod1(int m, int n) { } }, "demo1"); }
注意:
2. 注解需要添加
3. 方法名要一致
4. 调用格式需要一致(事例中的demo1必须要有)
5. 参数的类型也要对应