Updated Branches: refs/heads/master 999c548e6 -> 1b33dbe2a
Provide an addJavascriptInterface() exec object. -Disabled for 2.3 emulator to avoid a crash bug. Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/1b33dbe2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/1b33dbe2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/1b33dbe2 Branch: refs/heads/master Commit: 1b33dbe2aeae8882a2cc85c566ffb5e6c844c249 Parents: 80654c0 Author: Andrew Grieve <agri...@chromium.org> Authored: Thu Aug 16 17:21:30 2012 -0400 Committer: Andrew Grieve <agri...@chromium.org> Committed: Fri Aug 17 11:15:19 2012 -0400 ---------------------------------------------------------------------- .../src/org/apache/cordova/CordovaWebView.java | 17 +++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1b33dbe2/framework/src/org/apache/cordova/CordovaWebView.java ---------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java index 03d916e..85c3cd8 100755 --- a/framework/src/org/apache/cordova/CordovaWebView.java +++ b/framework/src/org/apache/cordova/CordovaWebView.java @@ -30,6 +30,7 @@ import java.util.regex.Pattern; import org.apache.cordova.api.CordovaInterface; import org.apache.cordova.api.LOG; import org.apache.cordova.api.PluginManager; +import org.json.JSONException; import org.xmlpull.v1.XmlPullParserException; import android.annotation.SuppressLint; @@ -38,6 +39,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.XmlResourceParser; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.util.AttributeSet; import android.util.Log; @@ -232,6 +234,21 @@ public class CordovaWebView extends WebView { // TODO Auto-generated catch block e.printStackTrace(); } + exposeJsInterface(); + } + + private void exposeJsInterface() { + // addJavascriptInterface crashes on the 2.3 emulator. + if (Build.VERSION.RELEASE.startsWith("2.3") && Build.MANUFACTURER.equals("unknown")) { + Log.i(TAG, "Disabled addJavascriptInterface() bridge callback due to a bug on the 2.3 emulator"); + return; + } + this.addJavascriptInterface(new Object() { + @SuppressWarnings("unused") + public String exec(String service, String action, String callbackId, String arguments) throws JSONException { + return pluginManager.exec(service, action, callbackId, arguments, true /* async */); + } + }, "_cordovaExec"); } /**