Когда аннулируется одноразовое разрешение Android R?
Одноразовые разрешения описаны здесь следующим образом:
В Android 11 всякий раз, когда ваше приложение запрашивает разрешение, связанное с местоположением, микрофоном или камерой, диалоговое окно разрешений, доступное пользователю, содержит параметр под названием Только на этот раз, как показано на рисунке 1. Если пользователь выбирает этот параметр в диалоговом окне, ваш приложению предоставляется временное разовое разрешение. Ваше приложение может получить доступ к связанным данным только при выполнении одного из следующих условий:
Действия вашего приложения были видны с тех пор, как пользователь предоставил одноразовое разрешение.
Ваше приложение было видимым, когда пользователь предоставил разрешение и с тех пор запускает службу переднего плана. Пока служба переднего плана продолжает работать, ваше приложение сохранит разрешение, даже если пользователь переместит ваше приложение в фоновый режим.
Если ни одно из условий не выполняется, вам нужно снова запросить разрешение у пользователя, независимо от целевой версии SDK.
Итак, чтобы опробовать эту новую функцию, я сделал следующее:
- Я создал приложение, использующее камеру, без службы переднего плана.
- При появлении запроса я предоставил приложению одноразовое разрешение на использование камеры.
- После этого я попытался нажать "Домой" или открыть другое приложение, чтобы отправить мое приложение в фоновый режим.
Я думал, что это когда разрешение должно быть отменено, но это не так. Когда я вернулся в свое приложение, я все еще могу открыть камеру.
Итак, когда именно аннулируется одноразовое разрешение? Большое спасибо!
1 ответ
Судя по моим экспериментам, одноразовое разрешение подходит для текущего процесса. Как только ваш процесс завершается - по любой причине - разрешение истекает.
Однако неясно, является ли это ошибкой документации или ошибкой реализации. Следите за этой проблемой, чтобы узнать, что произойдет в будущих выпусках Android R.
Основываясь на экспериментах с разрешением камеры, после предоставления одноразового разрешения оно остается таким до тех пор, пока процесс приложения не будет убит пользователем или системой.
Если пользователь убивает приложение, система отменяет разрешение через 5 секунд. Это позволяет приложению не потерять разрешение при немедленном перезапуске.
Если пользователь запускает приложение в фоновом режиме, система отменяет разрешение через 1 минуту, тем самым прерывая процесс приложения.