Skip to content

Android permissions list and adb grant commands ​

In short: This Android permissions list covers every runtime (dangerous) permission in Android's reference, the special app-access permissions and the common normal ones, with the API level each arrived in. Pick one for the adb commands that grant, revoke or check it for your app, paste a manifest to see which permissions need granting, and export the list as CSV.

69 permissions shown

Android permissions, from the Manifest.permission reference read on 2026-11-02
PermissionWhat it allowsTypeAPIGroup
Continue a call that was started in another app.Runtime28Phone
Use location while the app is in the background.Runtime29Location
Use approximate location.Runtime1Location
Use precise location.Runtime1Location
Find and connect to devices on the local network (Wi-Fi or Ethernet, not mobile data or VPN).Runtime37–
Read the locations saved in photos and videos.Runtime29–
Recognise physical activity, such as walking, cycling or steps.Runtime29Physical activity
Add voicemails to the system.Runtime14Phone
Answer incoming phone calls.Runtime26Phone
Make the phone discoverable to nearby Bluetooth devices.Runtime31Nearby devices
Connect to paired Bluetooth devices.Runtime31Nearby devices
Find nearby Bluetooth devices.Runtime31Nearby devices
Read body sensors such as a heart rate monitor.Runtime20Body sensors
Read body sensors while the app is in the background.Runtime33Body sensors
Start phone calls without the dialler.Runtime1Phone
Use the camera.Runtime1Camera
See the list of accounts on the phone.Runtime1Contacts
Find and connect to nearby devices over Wi-Fi.Runtime33Nearby devices
Show notifications.Runtime33Notifications
See and redirect outgoing calls. (deprecated in API 29)Runtime1–
Measure the distance to devices with the generic ranging module.Runtime36–
Read calendar events.Runtime1Calendar
Read the call log.Runtime16Call logs
Read contacts.Runtime1Contacts
Read shared storage.Runtime16–
Read audio files in shared storage.Runtime33Music and audio
Read images in shared storage.Runtime33Photos and videos
Read videos in shared storage.Runtime33Photos and videos
Read only the photos and videos the person picked.Runtime34Photos and videos
Read the phone’s own numbers.Runtime26Phone
Read phone state, such as the network and whether a call is active.Runtime1Phone
Read text messages.Runtime1SMS
Receive MMS messages.Runtime1SMS
Receive text messages.Runtime1SMS
Receive WAP push messages.Runtime1SMS
Record audio with the microphone.Runtime1Microphone
Send text messages.Runtime1SMS
Use SIP calling.Runtime9Phone
Measure the distance to ultra-wideband devices.Runtime31Nearby devices
Add and change calendar events.Runtime1Calendar
Change the call log.Runtime16Call logs
Change contacts.Runtime1Contacts
Write to shared storage.Runtime4–
Draw over other apps (overlays).Special1–
Change system settings such as screen brightness or timeout.Special1–
Read and write all files in shared storage (All files access).Special30–
Ask to install other apps (Install unknown apps).Special23–
Set alarms that go off at an exact time.Special31–
Read app usage statistics (Usage access).Special23–
Change or delete media files without asking each time (Media management).Special31–
Open network connections.Normal1–
See whether and how the phone is connected to a network.Normal1–
See Wi-Fi state and the network’s details.Normal1–
Change Wi-Fi connectivity state.Normal1–
Connect to paired Bluetooth devices (before BLUETOOTH_CONNECT, API 31).Normal1–
Run a foreground service.Normal28–
Keep the processor from sleeping or the screen from dimming.Normal1–
Start when the phone has finished booting.Normal1–
Use the vibrator.Normal1–
Use the biometric prompt (fingerprint or face).Normal28–
Show full-screen notifications, such as an incoming call.Normal29–
See every installed app, regardless of package visibility rules.Normal30–
Ask to be left out of battery optimisation.Normal23–
Read the Do Not Disturb policy.Normal23–
Use NFC.Normal9–
Use exact alarms without asking, for apps whose core feature needs them.Normal33–
Read and write secure system settings.System3–
Read the system logs.System1–
Read system state from system services (dumpsys).System1–

Commands for CAMERA

android.permission.CAMERA · Runtime (asks the person) · added in API 1 · protection level: dangerous

Your shell
Grant it
adb shell pm grant com.example.app android.permission.CAMERA
Revoke it
adb shell pm revoke com.example.app android.permission.CAMERA
  • Careful: Android stops the app when one of its permissions is revoked, so it starts afresh next time.
Check whether the app has it
adb shell dumpsys package com.example.app | grep android.permission.CAMERA

Check an app’s manifest

Data from the Manifest.permission reference, read on 2026-11-02. Commands run only when you paste them into your terminal; nothing here leaves your browser.

Resetting permissions by hand on every test phone takes time. BenchFleet shows every connected phone on one screen, and on Pro its group actions install a build on many phones at once and its workflows set language, time zone, dark mode and font size for a run and put them back afterwards. See testing apps on real phones.

Free for up to 3 phones, with no account. Pro adds workflows, schedules and AI for up to 25 phones from £12 a month + VAT.

How to use it ​

  1. Find a permission by name, by what it guards (camera, location, notifications) or by type.
  2. Pick it in the table and fill in your app's package: the commands below grant it, take it away or show whether the app holds it, for the shell you use.
  3. Check a whole app by pasting its AndroidManifest.xml, the output of aapt dump permissions app.apk, or a list of names. The table says what each permission needs in a test, and one script grants the runtime ones and allows the special ones.
  4. Export the filtered list as CSV for a test plan, or print it.

The four kinds of permission ​

KindWho grants itadb
Runtime (dangerous)The person, in a dialog while the app runs (Android 6 and newer)pm grant / pm revoke
Special app accessThe person, on a page in Settings, such as Display over other appsappops set PACKAGE OP allow
NormalAndroid, at install, when the manifest declares itNothing to grant
Signature and systemOnly apps signed with the platform key, or system appsNot for ordinary apps

Android explains each in permissions on Android, and the pm and appops shell commands in its adb guide.

Examples ​

Grant the camera to an app and check it:

bash
adb shell pm grant com.example.app android.permission.CAMERA
adb shell dumpsys package com.example.app | grep android.permission.CAMERA

The second line prints android.permission.CAMERA: granted=true once it is granted. In PowerShell, use | Select-String android.permission.CAMERA instead of grep; in Command Prompt, | findstr android.permission.CAMERA.

Let an app draw over other apps, then put it back:

bash
adb shell appops set com.example.app SYSTEM_ALERT_WINDOW allow
adb shell appops set com.example.app SYSTEM_ALERT_WINDOW default

Test the notification prompt on Android 13 again by taking the permission away (the app is stopped):

bash
adb shell pm revoke com.example.app android.permission.POST_NOTIFICATIONS

Things that catch testers out ​

  • Background location comes second. ACCESS_BACKGROUND_LOCATION works only with coarse or fine location, and the app must ask for it separately. Grant the foreground permission first.
  • Storage changed twice. WRITE_EXTERNAL_STORAGE does nothing for apps that target Android 11 (API 30) or higher, and READ_EXTERNAL_STORAGE does nothing from API 33, where READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO replace it.
  • Notifications need asking from Android 13. POST_NOTIFICATIONS became a runtime permission in API 33.
  • Revoking stops the app. Android ends the app's process when you revoke one of its runtime permissions.
  • Denied twice means denied. On Android 11 and newer, after a person denies a permission twice, Android stops showing the dialog. pm grant gives the permission directly; clearing the app's data (pm clear, which deletes it) or reinstalling the app lets you test the dialog again.

Permissions are one section of the mobile app testing checklist; the ADB command builder writes the install, launch and clear-data commands around them.

Questions ​

What are dangerous permissions in Android?

Permissions whose protection level is dangerous, such as CAMERA, ACCESS_FINE_LOCATION or POST_NOTIFICATIONS. They guard private data or features, so from Android 6 (API 23) apps ask for them while running and the person can allow or deny each one. This list has all 43 that Android's reference marks dangerous.

How do I grant a permission with adb?

For a runtime permission, run adb shell pm grant followed by the package and the full permission name, such as adb shell pm grant com.example.app android.permission.CAMERA. Special access such as Display over other apps uses adb shell appops set with the package, the app-op and allow.

Why does pm grant fail with "not a changeable permission type"?

The permission is not a runtime permission. Normal permissions are granted at install, special ones need appops, and signature or system permissions cannot be granted to an ordinary app.

Why did my app close when I revoked a permission?

Android stops an app's process when one of its runtime permissions is revoked, so the app does not keep using access it has lost. It starts afresh the next time it opens.

Can I grant every permission at install?

Yes. adb install -g app.apk grants all the runtime permissions the app's manifest declares. This tool's manifest check writes the individual pm grant and appops commands when you want only some.

Does it send my manifest or package name anywhere?

No. The list and the manifest check work in your browser, so nothing leaves your browser; the commands run only when you paste them into your terminal.

Where does the data come from?

From the Manifest.permission reference on developer.android.com, read on 2 November 2026; the API and protection levels are copied from it, and the plain descriptions are ours. Android adds permissions in new versions, so the reference decides.

Start with the Free plan

Free for up to 3 phones, with no account. Pro adds workflows, schedules and AI for up to 25 phones from £12 a month + VAT.