eXtended Permission Manager for Android - view and set Manifest Permissions and AppOps
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.
- The app is tested on stock Android 7-10. Some highly customized ROMs may behave unexpectedly.
How to Build
build.gradlecalls 2 shell scripts to build native binaries and a
.dexfile. So Linux environment is expected with all standard tools.
- Download code:
git clone --recurse-submodules https://github.com/mirfatif/PermissionManagerX.git && cd PermissionManagerX
local.propertiesto the directory containing Android SDK API level (platform) 29 and build-tools 30.0.2 (and obviously the latest SDK
- App uses a number of AOSP's hidden/internal APIs which are not available with standard SDK. Replace
android.jarwith the one downloaded from here: https://github.com/anggrayudi/android-hidden-api.
local.propertiesto the directory containing Android NDK (I used r21d (21.3)).
JAVA_HOMEenvironment variable to JDK 11 (
verifyGoogleJavaFormattask won't work with JDK 1.8). Or
javacmust be on
./gradlewwith appropriate task name appended. Or use IntelliJ IDEA / Android Studio.