Android does not use jsi for this exact reason, so it is advised that you do the same. My advice, short of making a full on plugin, is to learn how to use cordova.exec directly and never worry about a bridge again.
Sent from my iPhone > On Sep 12, 2013, at 12:00 AM, "dev at watch2web.com" <d...@watch2web.com> > wrote: > > My app is a Cordova app -- Cordova 3.0.0, as I said. I added just a few > little JavascriptInterface methods because they did so little that writing a > full-on plugin seemed like overkill. It has all worked very nicely until API > 17, and I have not come across something that says it is forbidden to create > your own little JSI when using Cordova. If it is forbidden, please tell me, > and I apologize for my ignorance. > > I am using JDK 1.6. According to docs, it has full support for annotations, > and if it didn't, wouldn't this have failed on API levels 16 and lower? > > I guess your point is that I can probably demonstrate the same failure in an > app that doesn't use Cordova, and therefore, my problem is irrelevant. You > may be right about the first part, and of course I respect your judgment re. > relevance. But I imagine the same thing could be said about a lot of issues > you have had to deal with. I was hoping to get some direction from experts > who have had to deal with whatever change in Android 4.2.2 (API 17) occurred > that seems to be connected here. > > > ----- Original Message ----- From: "Joe Bowser" <bows...@gmail.com> > To: "dev" <dev@cordova.apache.org> > Sent: Wednesday, 11 September, 2013 16:59 > Subject: Re: addJavascriptInterface fails on Android API levels 17 and 18 > (4.2.2 and 4.3) > > > What does this have to do with Cordova? It looks like you're building > your own bridge on Android. > > Make sure that your Java version that you're building with supports > annotations. If not, you won't be able to add the Javascript > Interface. > >> On Wed, Sep 11, 2013 at 4:52 PM, dev at watch2web.com <d...@watch2web.com> >> wrote: >> I recently changed the value of targetSdkVersion in my AndroidManifest.xml >> from 16 to 18. They say, "Better late than never," but maybe not in this >> case. I discovered that the change causes my app to white-screen on startup >> on two Samsung Galaxy S4s -- both running API level 17 (4.2.2). (On the five >> other devices I have -- all running API 16 or lower -- everything still >> works as if nothing has changed.) If I set targetSdkVersion back to 16, the >> app works great on all devices, including both Samsungs. I am using Cordova >> 3.0.0. >> >> I have traced the problem to my onDeviceReady function, at the line where it >> first tries to execute one of my @JavascriptInterface functions. (It doesn't >> seem to matter which one.) Code snippet looks like: >> >> (in main Activity) >> >> appView.addJavascriptInterface(this, "MyJSI"); >> >> @JavascriptInterface >> public void foo() { .... } >> >> >> (in onDeviceReady) >> >> if (window.MyJSI == undefined) console.log("javascript interface is >> undefined"); >> else if (window.MyJSI == null) console.log("javascript interface is null"); >> else if (typeof(window.MyJSI) == 'object') console.log("javascript interface >> is an object: " + window.MyJSI); >> else console.log("javascript interface is not an object"); >> >> window.MyJSI.foo(); // foo is just some method I wrote -- I've only >> experimented with a few >> >> >> On both "good" (API level <= 16) and "bad" (Galaxy S4, API level >= 17) >> phones I get in the console output: >> >>>> javascript interface is an object: [object Object] >> >> On the "good" phones, everything continues, and I get all the logging that >> comes from subsequent parts of the app. On the "bad" phone, I get: >> >>>> Uncaught TypeError: Object [object Object] has no method 'foo' >> >> and things pretty much stop. >> >> >> You'd think I was in OK shape. I have a fix that involves changing one >> character -- not even in code, just a settings file -- and it works on all >> API levels. But NO, Google Play forbids lowering the targetSdkVersion. So I >> need to fix this for real. >> >> In searching, I found this issue from December. It isn't exactly what I'm >> seeing since deviceready does fire for me. But a lot of the elements seem >> very similar. >> >> https://issues.apache.org/jira/browse/CB-1879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13501660#comment-13501660 >> >> >> I'm happy to dig through Java source myself if it will help, but if so, I >> could use a little guidance getting started. >> >> Thanks, >> Andrew >