Android M: программно отозвать разрешения

В настоящее время я играю с новой системой разрешений Android M. Я планирую добавить экран в настройки моего приложения, где пользователь может предоставлять или отзывать разрешения.

Экран будет выглядеть как обычный экран настроек системы, но будет содержать дополнительную информацию, почему моему приложению требуется конкретное разрешение. Этот экран настроек будет дополнением к обычной обработке разрешений, как это предлагается в Документация.

Рабочий процесс будет следующим:

  • предоставление разрешения: откройте системное диалоговое окно для предоставления / отзыва (как предложено здесь)
  • отзыв разрешения: отозвать его программно

Итак, мой вопрос: можно ли отозвать разрешения программно? Я много искал, но результатов не получил.


person W3hri    schedule 21.07.2015    source источник
comment
Ответ вроде нет. См. stackoverflow.com/questions/7517171/ и stackoverflow.com/questions/19462511/.   -  person Mihai8    schedule 21.07.2015
comment
Эти вопросы и ответы относятся к «старой» системе разрешений, в которой все разрешения предоставляются при установке. Мой вопрос касается новой новой системы унтер Andoid M   -  person W3hri    schedule 21.07.2015


Ответы (4)


Вы ничего не можете сделать (по крайней мере, до сих пор). Кроме того, нет никакого намеренного действия, чтобы открыть настройки системы действий для вашего приложения. Я предлагаю открыть «запрос функции» в системе отслеживания проблем предварительного просмотра для разработчиков.

person greywolf82    schedule 21.07.2015
comment
Это печально, тем более, что моим планом было открытие намерения системных настроек б. Думаю, тогда мне следует открыть запрос функции. - person W3hri; 22.07.2015
comment
@ greywolf82: знаете ли вы, так ли обстоит дело с последней версией Android? - person narb; 13.09.2017

Вы можете отозвать разрешение от ADB Shell. если вы думаете о написании сценария оболочки и выполнении всего этого программно, тогда ДА, иначе НЕТ

Предоставление и отзыв разрешений

Вы можете использовать новые команды диспетчера пакетов ADB (pm) для предоставления и отзыва разрешений для установленного приложения. Эта функция может быть полезна для автоматизированного тестирования.

Чтобы предоставить разрешение, используйте команду grant диспетчера пакетов:

$ adb shell pm grant <package_name> <permission_name>

Например, чтобы предоставить пакету com.example.myapp разрешение на запись звука, используйте эту команду:

 $ adb shell pm grant com.example.myapp android.permission.RECORD_AUDIO

Чтобы отозвать разрешение, используйте команду revoke диспетчера пакетов:

 $ adb shell pm revoke <package_name> <permission_name>
person dex    schedule 20.09.2015

Нет Программно это невозможно в Android M Preview с новой моделью разрешений.

Но вручную вы можете делать то, что дано. отозвать разрешения вручную

person Sushil    schedule 21.07.2015
comment
пример кода для доступа к сведениям о местоположении для устройств Android M и pre M - person Harsha; 09.06.2016

для какого-то специального разрешения, такого как SYSTEM_ALERT_WINDOW. ты нуждаешься в этом :

adb shell appops set <package_name> SYSTEM_ALERT_WINDOW allow
person i love jack    schedule 09.04.2019