/PermissionManagerX

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

Primary LanguageJavaGNU Affero General Public License v3.0AGPL-3.0

PermissionManagerX Download

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. The only connection made outside the device is to check for app updates.

Note:

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

Screenshots

How to Build

  • build.gradle calls a shell script to build native binaries. So a 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) 30 and build-tools 30.0.3 (and obviously the latest SDK tools and platform-tools).
  • App uses a number of AOSP's hidden/internal APIs which are not available in official SDK. Replace android.jar with a custom built which includes all of the non-SDK interfaces (see details here). Plus in Android 11 some of the hidden APIs have been entirely removed which are required for the app to work. So they need to be added to the SDK (I just edited the respective .class files and added stub methods). A working android.jar is available here.
  • 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.

Third-Party Libraries

Credits and thanks to the developers of:

License License

You CANNOT use and distribute the app icon in anyway, except for Permission Manager X app.

Permission Manager X is free software: you can redistribute it and/or modify
it under the terms of the Affero GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Affero GNU General Public License for more details.

You should have received a copy of the Affero GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.