Вступить в клуб →
лёгкаявопросПлатформы и жизненный цикл приложения

Камера перестала открываться после того, как пользователь зашёл в системные настройки

Приложение сканирует QR-коды. При первом запуске оно запрашивает разрешение на камеру, а результат сохраняет у себя:

if (prefs.getBoolean("camera_granted", false)) {
    openScanner()
} else {
    requestCameraPermission()   // при успехе пишем camera_granted = true
}

Часть пользователей жалуется: сканер открывается, но показывает чёрный экран и ничего не сканирует.

В чём причина?

  • Пользователь мог отозвать разрешение в системных настройках, а приложение верит своему сохранённому флагу вместо текущего статуса у системы
  • Флаг разрешения нельзя хранить в обычных настройках приложения — для этого нужно защищённое хранилище
  • Разрешение выдаётся только на текущую сессию и сбрасывается при каждом перезапуске приложения
  • Все нужные разрешения надо запрашивать одним пакетом на старте приложения, иначе система выдаёт доступ частично и камера работает нестабильно

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела