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