Camera Permission in mobiele applicaties — wat het is, toegangstypen en hoe het werkt

Auteur: IT Sectr Gepubliceerd: 2026-05-21 Leestijd: 8 min

Camera Permission — dit is de toestemming die een mobiele app aan de gebruiker vraagt voor toegang tot de camera van het apparaat. Zonder dit kan de app geen foto’s maken, QR-codes scannen of videogesprekken starten. Volgens gegevens van Android Developers, 2024, moeten alle apps die de camera gebruiken op Android 6.0 en hoger toestemming vragen via een systeemdialoog.

Belangrijkste punten

  • Camera Permission — verplichte toestemming voor apps die met de camera van het apparaat werken op iOS en Android.
  • Android gebruikt Manifest.permission.CAMERA met een verplichte runtime-aanvraag vanaf API 23.
  • iOS vereist toevoeging van de sleutel NSCameraUsageDescription in Info.plist met een beschrijving van de reden voor cameragebruik.
  • Aanvraag in context van een functie (bijvoorbeeld bij het indrukken van de knop „Foto maken”) verhoogt de goedkeuringsconversie aanzienlijk.
  • Weigering van toegang moet worden afgehandeld via een alternatief scenario: selectie uit galerij of uploaden van bestand.

Wat is Camera Permission?

Camera Permission — dit is een systeemtoestemming die de toegang van apps tot de camera van een mobiel apparaat regelt. Mobiele platforms beschouwen de camera als een vertrouwelijke bron, omdat deze video kan opnemen en de omgeving van de gebruiker in realtime kan fotograferen.

Op Android behoort de CAMERA-toestemming tot de categorie gevaarlijke toestemmingen (dangerous permissions) en vereist een verplichte runtime-aanvraag. Op iOS is het toevoegen van de sleutel NSCameraUsageDescription in Info.plist een verplichte voorwaarde voor elke app die toegang krijgt tot de camera. Zonder deze sleutel crasht de app bij het openen van de camera.

Volgens onderzoek van Statista (2024) gebruikt ongeveer 68% van de mobiele apps in de top-100 van de App Store de camera in een of andere vorm: van het scannen van QR-codes tot het volledig maken van foto’s en video’s. Tegelijkertijd weigert 37% van de gebruikers toegang tot de camera als ze niet begrijpen waarom de app deze toestemming nodig heeft.

Camera Permission op Android

Camera Permission op Android wordt aangevraagd via een declaratie in het manifest en een daaropvolgende runtime-aanvraag. Vanaf Android 6.0 kan CAMERA-toestemming niet alleen in de installatiefase worden verkregen — de gebruiker moet expliciet toegang bevestigen.

Declaratie in AndroidManifest.xml

Om de camera op Android te gebruiken, moet u de bijbehorende declaratie toevoegen aan het manifestbestand. Zonder dit staat het systeem de app niet toe de camera te openen, zelfs niet met een runtime-aanvraag.

xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />

Het kenmerk android:required=false voor uses-feature maakt het mogelijk de app te installeren op apparaten zonder camera. Dit is belangrijk als de camera geen verplicht onderdeel is voor de werking van de hele app.

Runtime-aanvraag op Kotlin

De Camera Permission-aanvraag wordt uitgevoerd via de Activity Result API. Na ontvangst van het antwoord controleert de app de status en start de camera of toont een uitleg.

kotlin
private val cameraLauncher =
    registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
    if (success) {
        // Foto opgeslagen
        showPhoto(photoUri)
    }
}

private val permissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        openCamera()
    } else {
        showPermissionDenied()
    }
}

fun capturePhoto() {
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        openCamera()
    } else {
        permissionLauncher.launch(Manifest.permission.CAMERA)
    }
}

Kenmerken van Android 11+

Vanaf Android 11, als de gebruiker twee keer de toegang tot de camera heeft geweigerd, wordt de systeemdialoog niet meer getoond. De vlag Never Ask Again wordt automatisch ingesteld en de app kan de gebruiker alleen naar de systeeminstellingen leiden via Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS). De ontwikkelaar moet voorzien in een controle van shouldShowRequestPermissionRationale om tijdig een voorbereidend scherm weer te geven.

Camera Permission op iOS

Camera Permission op iOS wordt beheerd via de sleutel NSCameraUsageDescription in Info.plist en de aanroep van AVCaptureDevice.requestAccess. Apple controleert streng de rechtvaardiging van de aanvraag: als de app de camera op een voor de gebruiker niet voor de hand liggende manier gebruikt, kan de App Store de app afwijzen.

Configuratie van Info.plist

Een verplichte voorwaarde voor toegang tot de camera op iOS is het toevoegen van de sleutel NSCameraUsageDescription in het Info.plist-bestand. De tekenreekswaarde wordt in de systeemdialoog weergegeven als reden voor de aanvraag.

xml
<key>NSCameraUsageDescription</key>
<string>De app heeft toegang tot de camera nodig om profielfoto's te maken en QR-codes te scannen.</string>

Aanvraag op Swift

In Swift wordt de aanvraag uitgevoerd via de statische methode AVCaptureDevice.requestAccess. Na ontvangst van het antwoord verwerkt de app de status en start de opnamesessie.

swift
import AVFoundation

func requestCameraAccess() {
    AVCaptureDevice.requestAccess(for: .video) { granted in
        DispatchQueue.main.async {
            if granted {
                self.setupCameraSession()
            } else {
                self.showSettingsAlert()
            }
        }
    }
}

private func setupCameraSession() {
    guard let device = AVCaptureDevice.default(.for: .video)
    else { return }
    do {
        let input = try AVCaptureDeviceInput(device: device)
        let session = AVCaptureSession()
        session.addInput(input)
        session.startRunning()
    } catch {
        print("Camera error: \(error)")
    }
}

Controleren van de huidige status

Voordat u toegang tot de camera aanvraagt, wordt aanbevolen de huidige autorisatiestatus te controleren via AVCaptureDevice.authorizationStatus(for: .video). Dit voorkomt onnodige aanroepen van de systeemdialoog en behandelt correct gevallen waarin de gebruiker al een beslissing heeft genomen. De status kan .notDetermined, .restricted, .denied of .authorized zijn.

Gebruiksscenario’s van de camera

Camera Permission wordt toegepast in verschillende scenario’s, van eenvoudig scannen tot volledige video-opname. Elk scenario stelt zijn eigen eisen aan de implementatie en afhandeling van toestemmingen.

Scannen van QR-codes en barcodes

Op iOS wordt voor het scannen van QR-codes AVCaptureMetadataOutput gebruikt uit het AVFoundation-framework, dat Camera Permission vereist. Op Android wordt aanbevolen ML Kit Barcode Scanning van Google te gebruiken. Het is belangrijk op te merken dat voor het scannen van QR-codes de camera zelf wordt gebruikt, niet een beeldanalysebibliotheek — daarom is Camera Permission verplicht.

Foto’s maken en video’s opnemen

Standaard foto’s maken of video’s opnemen vereist Camera Permission op zowel iOS als Android. Op Android kunt u Intent(MediaStore.ACTION_IMAGE_CAPTURE) gebruiken, dat de systeemcamera-app opent — in dit geval wordt de toestemming aangevraagd door de systeemapp, niet door de uwe. Voor een cameravoorbeeld in de app (CameraX, Camera2 API) is echter een eigen toestemming nodig.

Videogesprekken en AR

Apps voor videogesprekken (Zoom, Google Meet) en augmented reality (ARCore, ARKit) vragen Camera Permission voor het vastleggen van video van de voor- of achtercamera. In dit geval moet de aanvraag bijzonder zorgvuldig worden uitgelegd, omdat de gebruiker mogelijk niet verwacht dat een app voor AR-passen van meubels de camera aanvraagt.

Configureren van opnameparameters

Bij het werken met de camera op iOS kunt u de opnameparameters configureren via AVCaptureDeviceInput en AVCapturePhotoOutput. Op Android vereenvoudigt CameraX de configuratie via callbacks ImageCapture, VideoCapture en Preview. Voor elke configuratie moeten de gewenste resolutie, zoomniveau en focusmodus worden opgegeven. De juiste keuze van de opnameconfiguratie beïnvloedt direct de prestaties van de app en het batterijverbruik.

Foutafhandeling bij het werken met de camera

Bij het werken met de camera kunnen verschillende fouten optreden. De camera kan bezet zijn door een andere app, uitgeschakeld in de systeemprivacy-instellingen of niet aanwezig zijn op het apparaat. Op Android wordt aanbevolen CameraAccessException af te handelen bij het aanroepen van CameraManager.openCamera. Op iOS moet AVCaptureDevice.authorizationStatus worden gecontroleerd en moet een weigering correct worden afgehandeld door de gebruiker voor te stellen naar de instellingen te gaan om toegang in te schakelen. Controleer altijd of er een camera op het apparaat aanwezig is voordat u toestemming vraagt met PackageManager.hasSystemFeature. Een dergelijke controle voorkomt onnodige aanvragen op apparaten zonder camera en verbetert de gebruikerservaring.

Prestatie-optimalisatie van de camera

Prestatie-optimalisatie bij het werken met de camera is belangrijk voor een soepele werking van de app. Video-opname in hoge resolutie verbruikt aanzienlijke processor- en batterijbronnen.

Gebruik op iOS AVCaptureSessionPresetMedium in plaats van de maximale resolutie als de app geen 4K-opname vereist. Op Android biedt CameraX de mogelijkheid ImageCapture te configureren met een doelresolutie via ImageCaptureConfig.Builder. Het is ook belangrijk de camera vrij te geven wanneer de app naar de achtergrond gaat en deze opnieuw vast te leggen bij terugkeer. Dit is een standaardpraktijk aanbevolen door Google en Apple om batterij te besparen.

Beste praktijken voor het aanvragen van cameratoegang

Beste praktijken helpen het goedkeuringspercentage van Camera Permission te verhogen en afwijzing van de app door de App Store of Google Play te voorkomen.

Gebruik een voorbeeld voor uitleg

Voordat u de systeemdialoog oproept, toont u een scherm met een voorbeeld van hoe de camera wordt gebruikt: een afbeelding van de scaninterface, een kader voor de profielfoto, een voorbeeld van een herkende QR-code. Visuele uitleg werkt beter dan tekstuele uitleg. Volgens gegevens van UX Movement (2024) verhoogt het toevoegen van een visueel voorbeeld de goedkeuringsconversie tot 72%.

Vraag toestemming op het moment van de actie

Vraag nooit Camera Permission bij de eerste keer opstarten van de app. Een gebruiker die de app net heeft geopend, zal eerder weigeren als hij de context niet begrijpt. Vraag toegang strikt op het moment dat de gebruiker op een knop drukt die de camera vereist: „Profielfoto maken”, „Code scannen”, „Videogesprek starten”. Contextuele trigger verhoogt de relevantie van de aanvraag.

Voorzie in een alternatief

Als de gebruiker Camera Permission heeft geweigerd, bied dan een alternatieve manier om de actie uit te voeren: een foto selecteren uit de galerij, handmatig invoeren van QR-codegegevens, een afbeelding uploaden van het apparaat. Weigering mag de functionaliteit van de app niet volledig blokkeren — dit is een vereiste van de aanbevelingen van Google Play en App Store voor app-ontwerp.

Veelgestelde vragen

Wat gebeurt er als de gebruiker Camera Permission weigert?

Bij een poging de camera te openen zonder toestemming krijgt u een foutmelding. Het is noodzakelijk om vooraf de status te controleren via checkSelfPermission op Android of authorizationStatus op iOS en een alternatief scenario aan te bieden.

Is Camera Permission nodig voor het scannen van QR-codes?

Ja, het scannen van QR-codes via de camera vereist Camera Permission. Een alternatieve benadering — het gebruik van bibliotheken voor QR-codeherkenning uit een afbeelding zonder camera (bijvoorbeeld het downloaden van een foto met een code uit de galerij) — maar dit vereist Photo Library Permission.

Hoe vraag ik Camera Permission aan op Android zonder Activity?

In de Jetpack Compose-architectuur kunt u rememberLauncherForActivityResult gebruiken met ActivityResultContracts.RequestPermission in een composable-functie. Voor services zonder UI is een directe toestemmingsaanvraag niet mogelijk — de controle moet worden overgedragen aan de Activity.

Waarom crasht de iOS-app bij het openen van de camera?

De meest waarschijnlijke oorzaak is het ontbreken van de sleutel NSCameraUsageDescription in Info.plist. Sinds iOS 10 veroorzaakt elke toegang tot AVCaptureDevice zonder deze sleutel een crash van de app met een NSInvalidArgumentException.

Hoe reset ik Camera Permission voor testen?

Op Android reset u de app-instellingen via Settings → Apps → [App] → Toestemmingen. Op iOS gebruikt u Settings → [App] → Camera-schakelaar. Voor het automatiseren van tests op iOS kunt u XCUITest gebruiken met resetAuthorizationStatus.

Samenvatting

  • Camera Permission — verplichte runtime-toestemming voor toegang tot de camera op beide mobiele platforms.
  • Android vereist declaratie van CAMERA in het manifest en aanvraag via de Activity Result API met controle van shouldShowRequestPermissionRationale.
  • iOS vereist de sleutel NSCameraUsageDescription in Info.plist en aanroep van AVCaptureDevice.requestAccess(for: .video).
  • Contextuele aanvraag (aanvraag op het moment van gebruik) verhoogt de goedkeuringsconversie tot 72% volgens gegevens van UX Movement.
  • Gebruiksscenario’s omvatten foto’s maken en video’s opnemen, QR-codes scannen, videogesprekken en AR-functies.
  • Alternatief scenario bij weigering (selectie uit galerij, handmatige invoer) is verplicht voor naleving van de vereisten van app-winkels.
  • Voorbereidend scherm met visuele uitleg vermindert het aantal weigeringen aanzienlijk.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook