Как использовать adb grant или adb revoke?
Документация Android содержит следующее описание команд adb grant и adb revoke.
grant <PACKAGE_PERMISSION>
Предоставить разрешения для приложений. Могут быть предоставлены только дополнительные разрешения, заявленные выражением.
revoke <PACKAGE_PERMISSION>
Отменить разрешения для приложений. Только необязательные разрешения, объявленные выражением, могут быть отменены.
Может ли кто-нибудь указать пример правильного синтаксиса для их использования?
Я предполагаю, что это будет разрешение типа android.permission.WRITE_EXTERNAL_STORAGE
или, возможно, просто WRITE_EXTERNAL_STORAGE
. Ну, я попробовал это, и несколько других, и я не могу заставить его работать.
Я также попытался (безрезультатно) несколько комбинаций пакета и разрешения, что имеет для меня больше смысла (это звучит как команда, которая будет изменять разрешение на один пакет, а не все)
Ответы
Ответ 1
Добавить:
adb shell pm grant com.name.app android.permission.READ_PROFILE
Удалить:
adb shell pm revoke com.name.app android.permission.READ_PROFILE
Это изменилось в выпуске Android M, поэтому в Lollipop (в первоначальное время написания ответа) вам сначала нужно было сделать adb shell
.
adb shell
pm grant com.name.app android.permission.READ_PROFILE
Полный список разрешений можно найти здесь. Если у вас настроены инструменты сборки Android, вы можете увидеть, какие разрешения использует приложение. Первое использование
adb shell pm list packages -f
Затем скопируйте пакет на свой компьютер:
adb pull /path/to/package/from/previous/step.apk
Тогда получите разрешения:
aapt d permissions path/to/app/on/computer.apk
Ответ 2
Если вам неизвестно имя разрешения или хотите удалить все разрешения, вы можете использовать
adb shell pm reset-permissions your.package.name
Ответ 3
Итак, немного командной строки (mac/linux), чтобы предоставить вашему приложению все необходимые ему разрешения из командной строки.
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