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

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

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

Рабочий процесс:

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

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

Ответ 1

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

Ответ 2

Вы можете отменить разрешение из командной строки ADB. если вы решили написать оболочку script и делать все это под программным путем, то ДА, иначе NO

Разрешения на выдачу и аннулирование

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

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

$ adb shell pm grant <package_name> <permission_name>

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

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

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

 $ adb shell pm revoke <package_name> <permission_name>

Ответ 3

Нет. Программически это невозможно в Android M Preview с новыми разрешениями.

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

Ответ 4

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

adb shell appops set <package_name> SYSTEM_ALERT_WINDOW allow