Apps on Google Play are throughly infested with ads and analytics and whatever. On desktop we used to call this kind of applications "spyware", frown upon them and let antivirus software block those on sight. On tablets, this is a norm of life.
Some guys from Cyanogen released a proof on concept a while ago. You could install any Android app and select which permissions to "mock".
Anyway, I think the permission system in Android makes sense the way it is. It forces app developers to declare what they want to do on you system, but the install process stays simple and straightforward. On Windows and OS X, we used to give every app the "do whatever you want with my computer" permission for years.
On Android you risk a shitstorm of bad reviews if you fail to explain the reasoning for permissions to users. And Google can use the permission list and double check apps with critical permissions for malicous behaviour.
First off, there are already lots of places you have to handle compatibility based on the version of the phone, intents available from other apps installed on the phone, or capabilities (even something as basic as a phone can't be guaranteed if you support tablets).
Obviously you can turn small things on and off in a block of code with if statements, but you can handle major changes with the Fragment model. If you have a drastically different UI due to a missing intent/permission/API feature you can actually ship the app with 2 different Fragments and decide which one to show at runtime.
As an aside, I turned off auto-updating for Facebook and will not upgrade from here. Too many permissions, too intrusive to the UI. I have deleted Facebook from my phone before and I'm fine without it now.
Of course this would soon be a cat and mouse game if Google really implemented it for everyone: Developers like WhatsApp would check the address book data whether it is statistically sound and if not they would request you to grand access for real, etc.
All the permissions only required for ads (like position, IMEI, full internet access, reading sms, reading address books) would also just have the app terminate if it's not possible, just like today they check for rooted devices based on tools like bash or they check for modified hosts files that block ads.
It is almost unavoidable that this happens. As Android is used more in enterprise settings, permissions such as access to contact databases would have to be selectively granted, and controlled by mobile device management systems.
It should always be the user's or administrator's choice. There really is no such thing as a "core" permission. Of course some apps become a nullity without some access, but an unhandled security exception in those cases could result, for example, in a more-detailed system message asking if you want to uninstall the app, since you have decided against giving it permissions that the developer has decided are essential. This would also alert you to when a non-location app was trying to sneak a look at where you are.
If developers were at least given an opportunity to explain to their users why they are requiring certain information, consumers may be more willing to allow access. It seems to me many apps take a "lets grab all the info we can" approach which is extremely off putting.
iOS (and OS X) does this: when a permission is requested, the developer can provide a usage description string to explain what that capability will be used for: https://developer.apple.com/library/ios/#documentation/Gener...
Note that on iOS permissions are requested to the user at runtime when the app tries to access a restricted capability, which helps understanding the request because it happens in the context of what the user is doing with the app.
Also, each one of them can be accepted or declined separately and turned on or off at a later time.
A typical case might be:
1. Developer releases free app
2. Users find it useful
3. Developer seeks to monetize, adds some mobile ad network libraries
4. Ad network libraries want the user's location
5. User's who liked the app now find themselves OK'ing a frivolous-seeming permission during an update, or they have to uninstall the app, potentially losing access to some of their own data.
And so we find our developer on the slippery slope. Putting the power to cause those apps to fail when they do dubious things in the user's hands means that developers would be more discriminating about their monetization partners, among other benefits.
If the app I downloaded said "Our free version requires your location due to our arrangement with our Ad providers" I would have at least known why they were wanting my location.
I know this doesn't solve the problem, people will still have the choice to either accept it (albeit grudgingly) or uninstall the app. What it does do however is acknowledge they are asking for permissions to a users data. If someone asks for my permission to use my car is it unreasonable for me to know why they want it?
In Android's case there is no way for them to know. The app either has the permission or it's not installed.
In iOS they do know. The user can give permission, not give permission, or can give it and revoke it later. Their analytics can then tell them what percentage of users are not giving them that info.
In any case, you as a developer could also choose to speak up and say to the network ad provider. "I'm choosing a provider that doesn't need more permissions".
The problem is if an app requests too many permissions it gets messy to just show a pop-up dialog for each and every one.
This is the reason why Google Chrome and Firefox started working on web apps that essentially are just fancy bookmarks those bookmarks provide permissions before hand for the web app so that they don't need to be requested later.
Otherwise I just use FB in the browser too.
I'm already wearing at least half a tinfoil hat, now it's time to put it on leave it there.
I have already deleted my facebook account a long time ago and honestly I haven't missed it ... at all!
I encrypt all my hard-drives at home and on my laptop, just because I can.
I have several privacy extensions installed in my browser and I try to avoid using chrome unless it's absolutely necessary.
I still use google search and gmail, but I will migrate away from them in the near future.
I do not want to be the product being sold any more, I don't want anyone to be able to put together a complete profile on me with a few clicks on keyboard.
"The line must be drawn here, this far - no further"
This is why Facebook Home does not need any permissions.
 : https://www.facebook.com/notes/facebook-engineering/under-th...
I wonder if Home is just a shell so they can maintain huge install counts on the main Facebook app. Then again, they could require the main app for API access and still use Home separately to handle drawing the Home UI and listening for Home interactions.
I wonder if this new permission is for the purpose of app switching, since the launcher doesn't seem to require this permission in it's current functionality. It seems like a bad permission to add if the interface doesn't yet require it. Are they jumping the gun on new features or using it in the backend?