Ошибки APK

SecurityException: разрешение отклонено

Текст ошибки

java.lang.SecurityException: Permission Denial: opening provider ... requires android.permission.READ_MEDIA_IMAGES
SecurityException: Neither user 10123 nor current process has android.permission.CAMERA

Причина

Код вызывает операцию, требующую разрешения, но в манифесте его нет или пользователь не выдал его во время работы.

Решение по шагам

  1. Проверь, что строка <uses-permission> есть в AndroidManifest.xml.
  2. Опасные разрешения (камера, геолокация, микрофон) нужно запрашивать во время работы через requestPermissions или Activity Result API.
  3. На Android 13+ используй новые разрешения вроде READ_MEDIA_IMAGES вместо READ_EXTERNAL_STORAGE.
  4. При отказе приложение не должно падать, а показывать пояснение.
  5. Для тестов выдай через adb shell pm grant или сбрось pm reset-permissions.

Примеры команд

adb shell pm grant com.example.app android.permission.CAMERA
adb shell dumpsys package com.example.app | grep -A3 "granted=false"
adb shell pm reset-permissions

Как не повторить

Запрашивай каждое разрешение прямо перед первым использованием, с объяснением.

Автор и лицензия: Nibras Code