How to Grant App Permissions via ADB Without Root Access

How to Grant App Permissions via ADB Without Root Access

30 November 2024 Stephan Petzl Leave a comment Tech-Help

Granting permissions to apps through ADB commands without root access is a common requirement for many Android developers and testers. While the default settings in Android do not allow this directly due to security reasons, there are workarounds that can help achieve this functionality.

Understanding the Problem

By default, Android’s permission system is designed to protect user data and device integrity. Attempting to grant app permissions using the command:

pm grant packageName permissionName

will result in a security exception unless root permissions are available. However, there are ways to circumvent this limitation by tweaking some settings in the Developer Options.

Step-by-Step Solution

1. Enable Developer Options

First, ensure that Developer Options are enabled on your device. You can do this by navigating to Settings > About Phone and tapping the Build Number multiple times until a notification appears indicating Developer Options are now enabled.

2. Configure USB Debugging and Security Settings

  • Go to Settings > Developer Options.
  • Enable USB Debugging.
  • Scroll down and enable USB debugging (Security settings). This option allows granting permissions and simulating inputs via USB.

Note: This step might prompt multiple warning messages which you need to acknowledge and accept.

3. Disable Permission Monitoring

In some Android versions and custom ROMs, there is an option called Disable Permission Monitoring located under Developer Options. Enabling this might be necessary for the ADB command to execute successfully.

4. Execute the ADB Command

Once the above settings are configured, connect your device to your computer and ensure it is recognized by ADB:

adb devices

Then, force stop the app for which you want to grant permissions and execute the permission command:

adb shell am force-stop packageName
adb shell pm grant packageName permissionName

Additional Considerations

These steps have been tested on various devices and Android versions, but there might be slight differences based on the device manufacturer and Android version.

Leveraging Repeato for Automated Testing

For developers and testers looking to automate testing processes without diving deep into command-line operations, Repeato offers a comprehensive solution. This no-code test automation tool for iOS and Android allows you to create, run, and maintain automated tests efficiently. With its built-in ADB support, Repeato enables the execution of ADB commands via script steps, making it easier to manage permissions and simulate conditions for your apps. By integrating Repeato into your testing workflow, you can streamline test automation, reduce manual effort, and enhance productivity.

Like this article? there’s more where that came from!