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
> 

Reply via email to