From 416132c89b374e304db3b20a80110d60cf7f3074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=9C=B2=E5=B4=9B?= Date: Wed, 1 Apr 2015 12:21:55 +0800 Subject: [PATCH 1/2] BugFix: When JavaScript calls a registered Android method with JSON Object, the Android "handle" method will get an "undefined" String. --- .../WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js b/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js index 63d9794b..20f0ff58 100644 --- a/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js +++ b/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js @@ -30,7 +30,7 @@ message['callbackId'] = callbackId } console.log("sending:"+JSON.stringify(message)); - _WebViewJavascriptBridge._handleMessageFromJs(message.data||null,message.responseId||null, + _WebViewJavascriptBridge._handleMessageFromJs(JSON.stringify(message.data)||null,message.responseId||null, message.responseData||null,message.callbackId||null,message.handlerName||null); } From e25487035022ceb03a85af7d255e9a733ca76848 Mon Sep 17 00:00:00 2001 From: Michael Zhou Date: Mon, 8 Jun 2015 19:10:58 +0800 Subject: [PATCH 2/2] The JavaScript will receive a plain String when android sending a JSON String to JavaScript because _dispatchMessageFromJava function fails to parse the JSON String. --- .../res/raw/webviewjavascriptbridge.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js b/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js index 20f0ff58..3af8f4fd 100644 --- a/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js +++ b/Android/WebViewJavascriptBridge/res/raw/webviewjavascriptbridge.js @@ -30,7 +30,7 @@ message['callbackId'] = callbackId } console.log("sending:"+JSON.stringify(message)); - _WebViewJavascriptBridge._handleMessageFromJs(JSON.stringify(message.data)||null,message.responseId||null, + _WebViewJavascriptBridge._handleMessageFromJs((typeof message.data == 'string') && message.data.constructor==String ? message.data : JSON.stringify(message.data)||null,message.responseId||null, message.responseData||null,message.callbackId||null,message.handlerName||null); } @@ -42,7 +42,7 @@ if (message.responseId) { var responseCallback = responseCallbacks[message.responseId] if (!responseCallback) { return; } - responseCallback(message.responseData) + responseCallback((typeof message.responseData == 'string') && message.responseData.constructor==String ? message.responseData : JSON.parse(message.responseData)) delete responseCallbacks[message.responseId] } else { var responseCallback