About Me

My photo
We are what we think & my blog entries reflect how I think. Have a sip of the poison of my mind.. It's not always lethal.

Sunday, January 18, 2015

Playing Dictator Over The Permissions of Android Apps

(Note: The following Xposed module works great on KitKat but it's currently a work-in-progress on Lollipop as of the date of this blog post)


The Apps Settings Xposed Module

Everytime I side-load an app from outside the Play Store, I'll run through the app's permissions with the 'App Settings' Xposed module (for rooted Android devices only) and disable all suspicious permissions which I think have no business being granted in relation to the functionalities of the app.

For instance, why would a gaming app be making permission requests to make phone calls without any intervention on my part and accessing my SMS messages? Decaying dead fishes stink to the high heavens but fishy permissions such as these stink even harder.

For a double-whammy disciplinary action to keep a rein on such apps to prevent them from going amok in the background whenever they are not in use, I'll also auto-hibernate them with the Greenify app. Spare the naughty apps the rod and they monkey around behind your back and might just run off with your personal and private information.

My device, my say. Amen.

Ok, perhaps I'm exploding the issue to paranoid levels but hey, if you grant a stranger entry into your house and give him your permission to look into your personal drawers in your study, he can make off with your private stuff if he wants to.

Not that the above will definitely happen but look at it this way: If you allow strangers into your house and you can't trust them because they are making strange requests on you, let them in if you really need them to, then confine them in a position where they can still function and serve your purpose but can't have the freedom to do more than they are basically supposed to. So what if you've tricked and one-upped them, they got themselves in this binary BDSM position for making unreasonable demands in the first place.

You don't have to tell me, I already know I suck at analogies. Moving on..

So, if the permission requests of an app is making you really uncomfortable (study the permission requests of the Facebook app and try telling me you don't find them horrifying with a straight face), you can simply avoid installing it altogether or have it uninstalled if it has already taken up residence on your device. But what if you simply must have the app despite it sending chills down your spine? Well, read on..

Gains for disabling unnecessary app permissions
The process of disabling permissions is reversible at the flick of a switch, so you don't have to worry about permanently breaking any of the apps in question. Of course, if you disable every single one of the permission requests of an app in their entirety, the app is gonna have its life choked out of it and won't be able to run. The idea here is to trim away unnecessary fat as opposed to committing 3rd degree app murder.

So sometimes, after you've disabled multiple permissions of your choosing and the app won't launch after that or behaves like it's intoxicated, some trial and error by re-enabling the turned-off permissions one by one is needed to nail down the offending disabled permission(s) which is causing the app to do the Lady Gaga on you. Find the happy working medium though, and you can help your battery juice it out longer too, besides having better security, since turned-off permissions can't do the hanky panky in the background.

Also, if an app which functionalities have no need for an internet connection to work and it displays ad banners or even worse, commits the most damnable of acts by throwing full-screen video ads in your face (this one absolutely makes my blood fucking boil), disabling its internet access permission will get rid of the ads, saving you some bandwidth in the long run - all the more so if we are talking about multiple numbers of such apps.

For ad banners, they might get replaced by a 'Missing Permission' or something along that line kind of message, but the app will still be able to function normally if you could get it to launch in the first place. But hey, the idea here is to save your bandwidth to begin with. As for those ultra annoying video ads, you can give them the finger for good and be much much happier for it.


Installing the App Settings module

If you are rooted and would like to whip apps with dubious permissions into submission, get and install the Xposed Framework first (and do a reboot following its prompts), then go into its 'Download' section and install the module 'App Settings'.

There are a lot of other modules you might find useful or fun in the Download section, so knock yourself out. Don't get too overly excited and forget to read their descriptions first before you install them though. You wouldn't wanna like say, install a module meant only for a Sony Xperia device on your Samsung and experience an identity crisis.

Remember that after you have installed the modules of your choice, go to the 'Modules' section of the Xposed Framework to enable the modules by making sure a checked mark is activated for each of them as shown on the right section of the associated pic you've just seen, then do a soft reboot (you will be prompted to), after which you can then proceed to play with the modules and alter things to your heart's content.


Using the module

When you launch the App Settings module, it will generate an entire list of system and user apps installed on your device. Just find the app you want to make changes to on the list and click on it. You will then be taken to the settings page of the app in question where you can alter its values and make changes to its permission grants.

I'll mention it again: it's a good idea to do this especially on apps you have side-loaded outside of the official Play Store.

Remember to click the Save button at the top right after you have made adjustments for them to take effect. Unlike most other Xposed modules, App Settings won't require a reboot of your device after you have made changes with it. Remember that changes made are reversible at the flick of a switch, so you can't really cripple any app permanently if you screw up.

That being said, I'd advice you to only play with the permissions of apps you have installed yourself and leave the system processes alone if you don't know what you are doing; I shall not be held responsible if your device experience any hiccups, be they minor or major.

Phew.

Conclusion
Yes I know, Apps Ops can also do something similar but I prefer Apps Settings since it gives a more detailed breakdown of each and every app permission whereas Apps Ops does things in a more condensed manner. Also, the Apps Settings module allows you to change the dpi settings of your apps individually. For example, you can change the DPI of an app till you get a tablet user interface for it. Just play around with the DPI and Screen (dp) values till you get your desired results.

On the surface, all these might seem like a hassle to some but to me, I like the geeky control of things and the geek in me finds it fun. I guess if you don't feel like it, you can forgo all these for apps you install straight from the Play Store (unless they are giving you issues). But when it comes to apps you side-load from anywhere else, it's best that you screen them through with the module.

The thing about permissions is, lots of apps straight from the official Play Store can have dubious permission grants too. Heh, even the official world we live in is definitely not a perfect one.
So we flick switches.