Android Enthusiasts Stack Exchange is a question and answer site for enthusiasts and power users of the Android operating system. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Occasionally I want to install an application which requires certain permissions that I feel it really shouldn't need. Can I install the app without giving it these permissions? For example, GPS location, phone state, internet connection, etc.

Is it possible to change the permissions of an application once it is installed?

share|improve this question
    
Here's a related question worth keeping an eye on: android.stackexchange.com/questions/3294 – Matt Dec 2 '10 at 1:53
    
another related question stackoverflow.com/questions/1836155/… – ccpizza Jan 6 '13 at 1:12
    
Related: Revoke App Permissions Without Root? – GAThrawn Apr 16 '13 at 12:17

11 Answers 11

Prior to Android 4.3 (Jelly Bean)

No. Without a custom ROM it's an all-or-nothing affair. Which is part of the reason Google encourages developers to ensure that they're asking for the absolute minimum permissions required for the app to work.

Short of getting the app code and modifying it, you either need to accept the access request or not use the app. Some alternatives exist if your device is rooted.

Android 4.3/4.4 (partly also 5.x)

There's a semi-hidden permissions manager that can be reached through a third-party app, but doesn't require root or a custom ROM. FuzzyQ has detailed that in his answer.

Note, however, that Google has said that this was released in error, and newer versions of Android have once again disabled this.

Android 4.4+

Additionally to above mentioned AppOps, here you can also use the Xposed Framework (for Android 5+ see here) with modules like Xprivacy or Protect My Privacy. While this will require your device to be rooted, it offers additional functionality.

Android 6+

marcioggs outlined functionalities provided in Android M in a separate answer.

share|improve this answer
3  
If you root, you can exclude network access with DroidWall, but that's a specific exception. – TREE Nov 24 '10 at 16:11
7  
Unfortunately, Google decided to group things which a lot of entertainment applications need such as determining if there's call active, under the same permission as things which very few non-phone-functionality applications need, such as determining the phone number. – Chris Stratton May 14 '11 at 6:23
1  
@FuzzyQ: I'll tweak my answer. – Al E. Oct 2 '13 at 12:12
2  
You can root your phone and use Xprivacy (free, uses Xposed), which is in my opinion the best permission manager at the moment. It has a ton of permissions it can block. It can even spoof your location, contacts and such, so that the application won't crash if you deny those permissions (it will just think you're at a weird location and have an empty contact list; you can also show only specific contacts to an application, etc.). play.google.com/store/apps/… – Cerberus Oct 29 '13 at 23:40
1  
@Izzy: I don't have much time or information to do it myself. I've made the answer Community Wiki to encourage others to keep it up to date. – Al E. Mar 24 at 17:20

CyanogenMod 7 supports this. It activated by going to Settings->CyanogenMod Settings->Applications and checking "Permission management" as of the most recent build. You can then allow and disallow permissions by choosing an app from the app management list (Settings->Applications->Manage applications). There is an article on endgaget with a Youtube demonstration.

Disclaimer: This may be obvious to some, but denying permissions to an app could have fairly crash-tastic consequences. Nonetheless, if you have a device that is supported by CM and you are willing to root and install it, you can enjoy permission-by-permission control (and any hazards that come with it).

In fact, due to the crashes that the permission management implementation tended to cause, it was removed from the CyanogenMod codebase in version 9. However, the most recent nightly builds of CyanogenMod 10.1 now include a feature that has been dubbed "Privacy Guard". Instead of blocking apps from accessing data that they request, Privacy Guard will provide them with blank data.

As an example, if an app running under Privacy Guard requests your contacts list, CM will simply return an empty list, causing the app to functionally believe that you don't have any contacts stored on your phone.

share|improve this answer
1  
Sadly, faking data is not considered for integration into CyanogenMod. – Denis Nikolaenko Jul 28 '11 at 19:53

There is an App Shield application. It essentially repackages .apk with permissions removed from manifest. Brilliant idea for stock, non rooted phones. Subject to crashes (force closes), though, as with CyanogenMod (as of version 7).


Update: App Shield seems no longer to be maintained. It currently can be found in some "personal Aptoide repositories", e.g. at Mixal and Karbyfio. It is recommended to rather use something more up-to-date now.

share|improve this answer
1  
The first link is dead unfortunately. Answer needs an update. – Firelord Oct 8 '15 at 16:02

NOTE: LBE Privacy Guard is no longer maintained and only available for Android versions below 4.2.

Warning: if you are on Jelly Bean (Android 4.1+), be sure to check whether LBE has been updated for Jelley Bean yet. At the moment (July 27 2012) it is still incompatible, and it will cause your device to boot loop on Jelly Bean. That means you may have to factory-reset your device. Xprivacy is now recommended instead (root required).


LBE Privacy Guard can block specific permissions per application, both during installation and afterwards. This is the English version of an apparently Chinese application that has existed for a while (I am not in any way affiliated to them); it already has over 100,000 downloads. I haven't tried it yet, but I plan to do so tomorrow.

You can also set it to, say, have Facebook display a prompt (yes/no) when it wants to access your location, etc. A screenshot from the Play Store:

enter image description here

share|improve this answer
    
This is the best permissions management app in my opinion - I've been using it for a while and it is excellent. – Logos Jul 14 '12 at 14:31
    
@Logos: I have been using it for a few hours, and I agree! – Cerberus Jul 15 '12 at 2:35
    
Doesen't work on Xperia ray with CM 10.0. I just had to re-install my device! – rubo77 Oct 29 '13 at 19:25
    
@rubo77: Ouch, that sucks! (Did you read my warning at the top?) – Cerberus Oct 29 '13 at 23:42
    
Yes, but I thought I might get away with it ;) You should add, that there is no way to recover a bootloop and that it doesen't work on many devices. looking at the feedback in Play store, exactly half the votes are 5 and halv are 1, so I guess every second device will fail – rubo77 Oct 29 '13 at 23:47

There is a Privacy Blocker (paid; no longer available) and Privacy Inspector (free) applications. Privacy Blocker does a static analysis of applications for sensitive API calls and rewrites these calls into stub ones which return fake data. As a result a new .apk with rewritten application is generated and installed. Privacy Inspector is an app which only reports the use of sensitive API calls.


Update: Privacy Blocker is no longer available, and Privacy Inspector has not been updated since 2011. Better chose a more up-to-date solution.

share|improve this answer
1  
I wonder is there an off-the-phone variation of such an app, i.e. a PC application which would repackage an apk prior to transferring it to a phone? – Alexander Shcheblikin Sep 24 '14 at 0:17

The following functionalities will be provided in Android M:

  • Give specific permissions as needed during rutime;
  • Show an app's permission;
  • Show all apps that uses a specific permission.

Documentation for M preview:

https://developer.android.com/preview/features/runtime-permissions.html

Permissions screen:

(Click image to enlarge)

IMG:

share|improve this answer

The answer 'no' holds no longer true for Android 4.3 Jelly Bean. There is a new Hidden App Permission Manager feature which can be unlocked using the third-party app App Ops Starter.

Since the necessary interface is already implemented in Android itself, you don't need root for this app to do its magic. And it's free.

You simply have to install the App Ops Starter application from the Play Store. After that, you can selectively disable single permissions of any app on your device.

I've tested this on a SGS2 with CM 10.2 (Android 4.3) and it's working fine.

(Click image to enlarge)

IMG: original screenshot from my own device showing the permission management tab of a specific app

Sorry that this screenshot is in German; it basically shows the permission tab of WhatsApp.

As you can see, everything is very intuitive, you simply use the slider to the right to (de-)activate a specific permission of an app. In this example, the app 'needs' the following permissions: location, read contacts, change contacts, receive SMS/MMS, send SMS/MMS, notify with vibration.

App Ops Starter even tells if the permission in question has ever been used by the app.

Changes should work instantly without reboot. I've not had any force closes so far, but pay attention to what you turn off. Some (should be all IMHO!) permissions may actually be needed for an app to work, e.g., turning off WhatsApp's ability to read your contacts wouldn't be very helpful.

share|improve this answer
1  
Android Police have an article about it, including some screen shots in English. – Al E. Oct 2 '13 at 13:30
1  
Permission Manager is another app which will give you access to these settings. – Al E. Oct 2 '13 at 13:30

You can use the Xposed Framework along with the App Settings Module to deny application permissions. You can also use it to change DPI settings allowing apps to run in tablet mode on phones and vice versa (along with changing the size of things in general). It works beautifully for me. You will need root to install it, though.

Thanks to Izzy for pointing out the need for a module. As per their comment you can also use Xprivacy or Protect My Privacy to achieve this control.

share|improve this answer
    
At the time this answer was written the app settings module came bundled with most xposed framework installations. That module supports this functionality. – Paarth Mar 26 at 8:06
1  
Thanks to you for still caring for your "old answers" – +1 for that :) So we shall cleanup (delete) our comments then :) PS: Please leave your first, it still makes sense :) – Izzy Mar 27 at 13:19

To withdraw an app just the right to enter internet in CyanogenMod you can use Root Firewall (needs root).

It can block internet access for any apps.

The free version can already block either all apps or just block up to 7 distinct apps.

share|improve this answer

I stumbled upon this app called Permission Remover that allows you to remove permissions from the APK package before installing it. Worked for both installed and downloaded APKs. This method is convenient as it does not require you to root your device.

share|improve this answer

Fine-grained app permissions are not present in stock builds of Android up to version 5.1.1. Google has introduced a new permissions model starting with 6.0 that includes fine-grained control. However, if you've gained root access on a device running version 5.1.1 or below, there are options for adding this feature to your device.

  1. Xposed Framework

Head over to xda-developers.com and search for "xposed framework" to get info on how to install the framework. After installing the framework, install either the XPrivacy or the App Settings modules to get more control over each app and their granted permissions.

  1. Install a Cyanogenmod-based ROM

Go to Cyanogenmod Downloads and see if your device is listed. If it isn't, head back to xda-developers.com and go to your devices forum page to find a list of ROMs for your device. Look for anything referring to "cyanogenmod" or "cm" in the original post of a ROM thread to find the right base to give permission control access.

Hope this helps.

share|improve this answer

protected by Matthew Read Mar 24 at 21:28

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.