Ugh. I spent a few hours this week trying to figure out why a previously-working PhoneGap app was having an odd issue in one small part of the application. The issue involved a set of buttons that linked to a detail page. Each link pointed to the same HTML file and used a URL parameter to pass along information. In other words, something like detail.html?id=1 or detail.html?id=2. I’ve blogged about this before. As I said - this worked fine until this week. Admittedly this part of the application wasn’t something I had used in a long while but the other users of the application weren’t seeing any issue at all.
Turns out - Honeycomb and higher Android versions do not support this type of URL anymore. You can read more about the bug here: http://code.google.com/p/android/issues/detail?id=17535.
Frankly I’m in awe that something so simple is still broken over a year later. Why didn’t I see the issue before? Simple - my last phone wasn’t ICS. Ditto for the other folks testing the application. As it stands, Kyle Dodge warned me about this in a comment on my blog post, but it didn’t really sink in. (Sorry Kyle!)
There is a pull request with Cordova to fix this issue, but from my reading it appears to “fix” it by removing the parameters. (I could be wrong on that!) That isn’t a fix to me.
For now - I’m going to:
1) Use data-foo to store the value. 2) Use a click handler to notice the click and store the value in LocalStorage 3) Update the code to get the value from LocalStorage