Take the 2-minute tour ×
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.

I have some apps that are asking for unnecessary permissions. I would like to revoke these, but I've read that this is not possible without rooting.

Is there any way to do this without having to root?

share|improve this question
add comment

1 Answer

up vote 6 down vote accepted

Yes there is, though it's not really elegant and it's a REALLY bad idea to do it.
The app that you do it to, will more than likely break if you revoked a permission and it tries to use it. If this wouldn't be enough you will lose your app data and you won't be able to update from the Play Store. With that said it's not that hard to do.

You need apktool. Refer to this guide on how to use it (you'll need the decompile and compile commands.) And this on signing the apk after you're done. You need to modify the AndroidManifest.xml file. Look for lines like this:

<uses-permission android:name="android.permission.CAMERA" />

and remove it if it bothers you.

After you're finished recompile the app than sign it. Now you can uninstall the original app and install the new one using a file manager or in adb using

adb install /local/path

To find out what each permission allows, you can refer to the incomplete documentation or try searching for it's name.

share|improve this answer
    
Great, thanks for your effort in writing this up. As a programmer, I'm suspicious of the idea that it's understandable that doing this will result in unhandled exceptions - an internet connection cannot always be available, and even system apps need to code around that potential failure. (To be fair, I suppose the API would raise a not-allowed-exception rather than a timeout-exception, which would have to be handled differently. But there should always be a catch-all exception for all unhandled types, imo). –  halfer Jun 12 '12 at 9:38
    
When you say you won't be able to update from the Play Store, do you mean just apps that are updated in this way, or once this process is done to any one app, no apps can then be updated via the Store? I would presume that if a modified app needed updating, one could just uninstall it, download it afresh from the Store, then modify it with this tool again? –  halfer Jun 12 '12 at 9:39
    
I suppose a good strategy to try this (especially on system apps like Calendar) is to remove one permission at a time, and then try the new binary for a couple of weeks, then rinse-n-repeat. One perhaps can get a feeling for which missing permissions cause the most trouble, and decide on a security/stability trade-off. –  halfer Jun 12 '12 at 9:43
    
I have seen apps crash when permissions were removed. I think it was access contacts or something like that. This is primarily an issue with inexperienced developers - a large team with a QA team should handle this kinds of stuff. I meant that the particular app can't be updated because in the process of doing this you change the keys used to signing the app. You couldn't do this with the default calendar as you can't uninstall it as it's a system app. Also if you have a crash a lolcat would say what permission is missing (IIRC) –  Richard Borcsik Jun 12 '12 at 11:56
    
is it even possible to get the APK for an app you have installed from the market, if you are not rooted? –  Kidburla Jan 2 '13 at 9:57
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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