Android 网页交互详解和mWebview.evaluateJavascript带参数注意事项

android 4.4以下跟H5交互需要调用webview的loadUrl(javascript:方法名(参数))来实现调用js方法。如果需要网页获取返回值还需要网页调用安卓 @JavaScriptInterface  注解的方法才可以。

Android 4.4以上调用webview.evaluateJavascript(javascript:方法名(参数),new ValueCallback{

public void onReciveValue(String value){}

})来实现调用js方法,同时能够获取网页返回的数据。

需要注意的是如果单纯参数递的是json格式的字符串,网页接受到的会是json对象。例如:

                        String payId = jsonObj.optString("payId");
                        JSONObject result = new JSONObject();
                        result.put("payId", payId);
                        String s = result.toString();
                        String js = "javascript:" + functionName + "(" + s + ")";
                        mWebview.evaluateJavascript(js, new ValueCallback() {
                            @Override
                            public void onReceiveValue(String value) {
                                LogUtil.e(TAG, "getPayId onReceiveValue " + functionName);
                            }
                        });

网页接收到的是一个json对象,但苹果一般传给网页的是一个json格式的字符串,后台经常需要统一处理。这种情况下需要修改如下,此时网页收到的也会是一个json格式的字符串。

                        String payId = jsonObj.optString("payId");
                        JSONObject result = new JSONObject();
                        result.put("payId", payId);
                        String s = result.toString();
                        String js = "javascript:" + functionName + "('" + s + "')";
                        mWebview.evaluateJavascript(js, new ValueCallback() {
                            @Override
                            public void onReceiveValue(String value) {
                                LogUtil.e(TAG, "getPayId onReceiveValue " + functionName);
                            }
                        });

 

你可能感兴趣的:(Android 网页交互详解和mWebview.evaluateJavascript带参数注意事项)