Когда аннулируется одноразовое разрешение Android R?

Одноразовые разрешения описаны здесь следующим образом:

В Android 11 всякий раз, когда ваше приложение запрашивает разрешение, связанное с местоположением, микрофоном или камерой, диалоговое окно разрешений, доступное пользователю, содержит параметр под названием Только на этот раз, как показано на рисунке 1. Если пользователь выбирает этот параметр в диалоговом окне, ваш приложению предоставляется временное разовое разрешение. Ваше приложение может получить доступ к связанным данным только при выполнении одного из следующих условий:

  • Действия вашего приложения были видны с тех пор, как пользователь предоставил одноразовое разрешение.

  • Ваше приложение было видимым, когда пользователь предоставил разрешение и с тех пор запускает службу переднего плана. Пока служба переднего плана продолжает работать, ваше приложение сохранит разрешение, даже если пользователь переместит ваше приложение в фоновый режим.

Если ни одно из условий не выполняется, вам нужно снова запросить разрешение у пользователя, независимо от целевой версии SDK.

Итак, чтобы опробовать эту новую функцию, я сделал следующее:

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

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

Итак, когда именно аннулируется одноразовое разрешение? Большое спасибо!

1 ответ

Решение

Судя по моим экспериментам, одноразовое разрешение подходит для текущего процесса. Как только ваш процесс завершается - по любой причине - разрешение истекает.

Однако неясно, является ли это ошибкой документации или ошибкой реализации. Следите за этой проблемой, чтобы узнать, что произойдет в будущих выпусках Android R.

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

Если пользователь убивает приложение, система отменяет разрешение через 5 секунд. Это позволяет приложению не потерять разрешение при немедленном перезапуске.

Если пользователь запускает приложение в фоновом режиме, система отменяет разрешение через 1 минуту, тем самым прерывая процесс приложения.

Другие вопросы по тегам