03-17-2010 02:08 PM
We’re having issues with reinstalling our app via OTA on a 9700 running 22.214.171.1240. We do not have the same issues with any other devices. We also do not have any issues if the app has been deleted and the device has been rebooted.
03-17-2010 07:24 PM - edited 03-17-2010 07:26 PM
1. What exactly do you mean when you say "fails to reinstall OTA"? What are the error messages and/or stack traces?
2. Do you mean BlackBerry Browser OTA (point the BlackBerry Browser to a .jad file) or some proprietary OTA download + CodeModuleManager or BES OTA Push?
3. Does you application consists of multiple modules (excluding sibling modules)? If it does, are you upgrading them all in one go?
03-17-2010 10:27 PM
1) The foreground app throws an exception making a call to RuntimeStore.getRuntimeStore().There is nothing in exception.getMessage(); I added some instrumentation code which showed that the background app was still running, and we do not see anything in the log from the background app starting up, so I assume it's from the previous installation of the app.
2) Yes, it was Blackberry OTA with a .jad file. This mechanism has generally worked well forus, with this one (seemingly random and occasional) exception.
3) When we distribute via OTA, the application is 7 .cod files and a .jad file. Otherwise it'd distributedas a single .cod (about 380 kb) and an .alx file. There is a CLDC application and an Alternate Entry Point.
03-18-2010 08:41 AM
Accessing the runtimestore:
guid:0xC1A90F9B4F904C57 time: Fri Mar 12 11:21:54 2010 severity:5 type:2 app:App Perms data:d MyCompany:2
guid:0x9C3CD62E3320B498 time: Fri Mar 12 11:21:54 2010 severity:1 type:3 app:Java Exception data:
No detail message
03-18-2010 09:32 AM
Is the handheld rebooted at the end of the upgrade? If not, try to cold-reboot and see if the error persists. If it goes away, then it's probably due to the classic issue where application permissions don't properly apply after an upgrade in certain cases. In this case, you can experiment with programmatically checking, just before accessing RuntimeStore, whether you have the Inter Process Communication (Cross Application Communication in newer OSes) permission or not.
03-18-2010 10:11 AM
Thanks. That sounds like the problem.
A cold reboot always fixes it.
Is there anything that can be done from within the app to change the permissions if we're in that state? At one point, I had tried a loop to catch the exception from getting the runtimestore, wait one second, and try again. Even ten tries was not enough.
For now, what we're doing is detecting the condition, and prompting the user with a dialog box: do they want to reboot? If yes, we reboot, if no, we exit the app. This is not ideal but at least it's not totally embarrassing.
Oh yes, forcing a reboot, that was another adventure in Blackberry development...