How do I use adb grant or adb revoke?
To Add:
adb shell pm grant com.name.app android.permission.READ_PROFILE
To Remove:
adb shell pm revoke com.name.app android.permission.READ_PROFILE
This changed at the release of Android M, so in Lollipop (at original time of writing answer) you needed to do adb shell
first.
adb shell
pm grant com.name.app android.permission.READ_PROFILE
A full list of permissions can be found here. If you have android build tools set up you can see what permissions the app is using. First use
adb shell pm list packages -f
Then copy the package to you computer:
adb pull /path/to/package/from/previous/step.apk
Then get permissions:
aapt d permissions path/to/app/on/computer.apk
If you happen to not know the name of permission or want to clear all permissions you can use
adb shell pm reset-permissions
WARNING: This will reset run-time permissions for all the apps on your phone. You cannot reset for a specific package.
So here's a little command line (mac/linux) to grant your app all of the permissions it requires from the command line.
aapt d permissions ./path/to/your.apk \
| sed -n \
-e "s/'//g" \
-e "/^uses-permission: name=android.permission\./s/^[^=]*=//p" \
| xargs -n 1 adb shell pm grant com.your.package