3

I want more granular control over permissions. I’m fine with applications having some permissions, but I want to be in charge and have more granular control.

Can this be done on Android? I know iOS has this for some things like contacts and calendar data. The user is prompted before the application gets access to these sensitive datasets.

Technically, I can see this working by denying API access when the application tries to access it.

1

3 Answers 3

4

Adding to Chahk's answer: Yes, it's true that "natively" permissions are an "all-or-nothing". The "standard user" is expected to either accept all permissions an app requests -- or to refrain from its installation.

And yes, it's true: using an app like Permissions Denied, which simply "denies" an app certain permissions, apps might force-close as they don't expect this.

But there's a third way where apps are simply fed "fake data". This is done e.g. by LBE and PDroid (see Other apps to manage permissions? and how to fake my personal information for details). App wants the contacts? Ooops, address book is empty. IMEI? OK, how about "1234567890"? Internet? Sorry, but we're in a tunnel -- neither WiFi nor mobile data available. So all returned data make sense to the requesting app: It does not get a simple "exception", so it doesn't crash. And what it makes up from the fake data -- who cares? :)

Needless to say: root is required here as well...

2

Each app will present a list of permissions it makes use of during installation, at which point a user can either accept them and install the app, or deny and stop the installation. The permissions model in Android is an "all or nothing", meaning that you either accept everything the app asks for, or not install it.

Out of the box, after that initial acceptance, stock Android doesn't provide ability for users to deny specific permissions. However, if your phone is rooted, there are 3rd-party apps that enable this functionality. Some custom ROMs have this as well. Keep in mind that the vast majority of apps are coded to assume that all of their declared permissions are available (since you have to accept them in order to install said app.) Therefore they won't bother checking for the conditions where permissions were denied via non-standard methods. This means that apps will most likely become unstable and may crash or hang.

1

You may get what you want, but you need to alter or flash an aftermarket firmware onto your device.

There's CyanogenMod 7's permission management, but it's only capable of revoking permissions. API requests fail then. Eventually this is the same as if the developer forgot to declare the permission in the first place and apps often don't check that condition and fail.

Then there's the Privacy Droid (pdroid) extension patch set. It's been originally developed for Android 2.3 and consists of a closed source (Management App on Google Play and an open source patch for the firmware (see the link on the play store).

Because development has stalled, others ported the system patches to newer Android versions and open source management apps were also written. Some custom Roms include all necessary changes already, for those who do not (CM, et al.) there's the autopatcher project to modify firmware images to include all necessary bits:

AutoPatcher thread on XDA

1
  • Hint: There are two forks of the original PDroid available meanwhile. Details can be found via the links in my answer on this question. One of the forks is even Open Source (OpenPDroid).
    – Izzy
    May 21, 2013 at 12:14

Not the answer you're looking for? Browse other questions tagged .