Разрешения Android: просить только в нужный момент
UX-подход к камере, уведомлениям, файлам и другим чувствительным возможностям.
Короткий ответ
UX-подход к камере, уведомлениям, файлам и другим чувствительным возможностям. На практике ответ сводится к четырём решениям: связывайте запрос с действием пользователя; сначала объясняйте пользу; предусмотрите отказ без тупика; не просите разрешение, которое не используете.
Что важно понять
Android ограничивает фоновые процессы ради батареи, приватности и предсказуемости системы. Надёжное приложение выбирает API под конкретный сценарий и корректно переживает отзыв разрешений, перезагрузку и длительный простой.
Порядок действий
- Связывайте запрос с действием пользователя.
- Сначала объясняйте пользу.
- Предусмотрите отказ без тупика.
- Не просите разрешение, которое не используете.
Эти пункты идут в рабочем порядке: сначала определяется исходное условие, затем настраивается основной сценарий, после чего проверяются исключения и реальное поведение. Если тема не требует последовательного выполнения, используйте список как четыре независимых критерия проверки.
Частые ошибки
- тестировать только на одном устройстве. Из-за этого решение опирается на неверное исходное предположение.
- запрашивать все разрешения при первом запуске. Так инструмент или процесс начинает маскировать проблему вместо её решения.
- полагаться на фоновый процесс без системных механизмов. Ошибка часто проявляется только в ближайшем реальном сценарии.
- Не определить критерий готовности. Без него невозможно отличить завершённую работу от бесконечной настройки.
Когда базового подхода недостаточно
Поведение и требования Android меняются между версиями. Перед релизом сверяйте реализацию с документацией для target SDK приложения и актуальными правилами Google Play.
Источники и дополнительное чтение
Итог
UX-подход к камере, уведомлениям, файлам и другим чувствительным возможностям. Используйте четыре пункта выше как минимальный чек-лист и пересматривайте решение, когда меняются исходные условия.