I received some disturbing news from some users. It seems the “Data Connectivity” does not work any more on Android 2.3 (Gingerbread). So I wanted to know why is this happening. Well, Google decided that a certain permission (MODIFY_PHONE_STATE) is no longer for us mere mortals, and only system applications are allowed to use it.
This permission is required for quite a number of apps in the Market, not just mine, so it will break ALL of them.
They did this before: they didn’t allow apps to change the GPS status, for example (starting with 1.5). Their reason is “privacy”. If the user wants his GPS off, it should stay off (of course, this doesn’t prevent Google – or Apple, for that matter – from tracking you). So no “track my girlfriend” kind of apps are possible 😉
Anyhow, to get serious. Google chose this security model for apps, where if the user knows that an application does need to do something and he allows it, it should be allowed to do so.
So why shouldn’t an application that specifically says it will enable / disable data connection (or GPS etc.) be allowed to do it ?!
I have *some* Windows Mobile development background, and I always blamed Microsoft for using their complicate signing procedure for applications. But it turns out this model is more “open” than Google’s:
– if an app was signed with a “privileged” certificate, it could access all functionality
– if an app wasn’t signed (or signed with an “unprivileged” certificate), it didn’t have access to all areas
These certificates were kind of hard to get (complicate procedure, paperwork etc.), but in the end they were linked to your person / company, so evil-doers *wink* could be easily identified.
So this model opened up a lot of possibilities for developers and apps.
Frankly, I don’t like how Google reacts to bad apps. They see a bad-acting app and what do they do? “Oh, we’ll lock this function up. Easy.”. They will do this until apps are only allowed display “Hello, world!”, and only for a limited amount of time.
In the end, there can be only one: Google’s app.
EDIT: here’s other people complaining about it as well: http://code.google.com/p/android/issues/detail?id=15031