PermissionManagerX

eXtended Permission Manager for Android - view and set Manifest Permissions and AppOps

Get it on Google Play
Get it on F-Droid
Available at Amazon AppStore
Get it on XDALabs

Features

Using eXtended Permission Manager, for each installed app, on single screen, you can:

  • View, grant or revoke manifest permissions
  • View AppOps permissions and choose one of multiple modes
  • Set your desired reference value for every changeable permission

The app evolved from a shell script to a GUI for my personal needs. After a ROM upgrade or changing device, it's a time-taking process to review all installed apps for granted permissions and revoke the unnecessary ones (after all privacy matters). To come up with a solution, you can set reference states of permissions which can be quickly backed up and restored. Colored bars at left indicate reference states and make it quite easy to review packages and permissions at a glance.

Manifest permissions are those normally called permissions e.g. Storage, Camera etc. AppOps (app operations) is a robust framework Android uses at back end for access control. With every Android release manifest permissions are becoming more dependent on AppOps. So it's fun to control both simultaneously and see how they relate to each other.

In short, AppOps provide a fine-grained control over many of the manifest permissions. Plus it provides additional controls like background execution, vibration, clipboard access etc. Explore the app to see more.

Required Privileges / Permissions

  • In order to let Permission Manager X serve you at its best, either the device must be rooted or you need to enable ADB over network.
  • android.permission.INTERNET is required to use ADB over network. No connections are made outside the device.

Note:

  • The app is tested on stock Android 7-10. Some highly customized ROMs may behave unexpectedly.

Screenshots

1--2-

2--1-

3--1-

4--1-

5--1-

6

How to Build

  • build.gradle calls 2 shell scripts to build native binaries and a .dex file. So Linux environment is expected with all standard tools.
  • Download code: git clone --recurse-submodules https://github.com/mirfatif/PermissionManagerX.git && cd PermissionManagerX
  • Set sdk.dir in local.properties to the directory containing Android SDK API level (platform) 29 and build-tools 30.0.2 (and obviously the latest SDK tools and platform-tools).
  • App uses a number of AOSP's hidden/internal APIs which are not available with standard SDK. Replace android.jar with the one downloaded from here: https://github.com/anggrayudi/android-hidden-api.
  • Set ndk.dir in local.properties to the directory containing Android NDK (I used r21d (21.3)).
  • Set JAVA_HOME environment variable to JDK 11 (verifyGoogleJavaFormat task won't work with JDK 1.8). Or java and javac must be on PATH.
  • Run ./gradlew with appropriate task name appended. Or use IntelliJ IDEA / Android Studio.

GitHub