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