From 3566154cd02b10cc1fb5dde39db30a02dc56a953 Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Thu, 22 Nov 2012 12:39:18 -0500 Subject: [PATCH] Add @JavascriptInterface annotations to ExposedJsApi. And re-enable the JS bridge on 4.2. https://issues.apache.org/jira/browse/CB-1879 --- framework/src/org/apache/cordova/CordovaWebView.java | 4 ---- framework/src/org/apache/cordova/ExposedJsApi.java | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java index efd3cf89..4777f25a 100755 --- a/framework/src/org/apache/cordova/CordovaWebView.java +++ b/framework/src/org/apache/cordova/CordovaWebView.java @@ -302,10 +302,6 @@ public class CordovaWebView extends WebView { Log.i(TAG, "Disabled addJavascriptInterface() bridge callback due to a bug on the 2.3 emulator"); return; } - else if (SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR1) { - Log.i(TAG, "Disabled addJavascriptInterface() bridge callback for 4.2. Symbols are broken, and we can't compile the annotation needed to expose the exec."); - return; - } this.addJavascriptInterface(exposedJsApi, "_cordovaNative"); } diff --git a/framework/src/org/apache/cordova/ExposedJsApi.java b/framework/src/org/apache/cordova/ExposedJsApi.java index b386a402..a36bb62b 100755 --- a/framework/src/org/apache/cordova/ExposedJsApi.java +++ b/framework/src/org/apache/cordova/ExposedJsApi.java @@ -18,6 +18,7 @@ */ package org.apache.cordova; +import android.webkit.JavascriptInterface; import org.apache.cordova.api.PluginManager; import org.apache.cordova.api.PluginResult; import org.json.JSONException; @@ -37,6 +38,7 @@ import org.json.JSONException; this.jsMessageQueue = jsMessageQueue; } + @JavascriptInterface public String exec(String service, String action, String callbackId, String arguments) throws JSONException { jsMessageQueue.setPaused(true); try { @@ -51,10 +53,12 @@ import org.json.JSONException; } } + @JavascriptInterface public void setNativeToJsBridgeMode(int value) { jsMessageQueue.setBridgeMode(value); } + @JavascriptInterface public String retrieveJsMessages() { return jsMessageQueue.popAndEncode(); }