Проверяете checkSelfPermission; при необходимости показываете rationale; запрашиваете через Activity Result API (RequestPermission/RequestMultiplePermissions); обрабатываете grant/deny и «Don’t ask again».
Разбор
Не стартуйте камеру до GRANT.
shouldShowRequestPermissionRationale == false после отказа → ведите в Settings.
Группируйте логически связанные права, не «все сразу».
На API 33+ уведомления — отдельный POST_NOTIFICATIONS.