Android Academy · Les

Machtigingen aanvragen in Compose

Gebruik de Accompanist- of activity result-API's.

Les 2 van 413 stappen

Machtigingen aanvragen in Compose is een gratis Android Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.

Aanvragen in Compose

In Jetpack Compose vraag je machtigingen tijdens runtime aan met de Activity Result API, verpakt door rememberLauncherForActivityResult. Hiermee vermijd je de oude callback onRequestPermissionsResult.

Het contract RequestPermission

De Activity Result API gebruikt contracten die invoer en uitvoer definiëren. ActivityResultContracts.RequestPermission() ontvangt een machtigingsreeks en retourneert een Boolean-resultaat dat aangeeft of de machtiging is toegekend.

Een launcher maken

rememberLauncherForActivityResult maakt een launcher die aan de compositie is gekoppeld. Je geeft het contract en een callback door die het resultaat ontvangt.

val launcher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission()
) { isGranted ->
    if (isGranted) {
        // permission granted, use the feature
    } else {
        // permission denied
    }
}

De aanvraag starten

Roep launcher.launch aan met de machtiging die je wilt aanvragen. Het systeem toont het dialoogvenster en je callback wordt aangeroepen met de keuze van de gebruiker.

Button(onClick = {
    launcher.launch(Manifest.permission.CAMERA)
}) {
    Text("Enable Camera")
}

Controleer voordat je aanvraagt

Start niet zomaar een aanvraag. Controleer eerst of de machtiging al is toegekend en vraag haar alleen aan als dat niet zo is.

val context = LocalContext.current
val alreadyGranted = ContextCompat.checkSelfPermission(
    context, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED

Status bijhouden in Compose

Bewaar de huidige toestemmingsstatus in de status, zodat de gebruikersinterface kan reageren. Werk deze bij in de callback van de launcher.

var hasCamera by remember {
    mutableStateOf(
        ContextCompat.checkSelfPermission(
            context, Manifest.permission.CAMERA
        ) == PackageManager.PERMISSION_GRANTED
    )
}

val launcher = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestPermission()
) { granted -> hasCamera = granted }

Meerdere machtigingen aanvragen

Gebruik voor meerdere machtigingen tegelijk het contract RequestMultiplePermissions. De callback ontvangt een toewijzing van machtiging naar toestemmingsstatus.

val multi = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestMultiplePermissions()
) { results ->
    val fineLocation = results[Manifest.permission.ACCESS_FINE_LOCATION] == true
}

multi.launch(
    arrayOf(
        Manifest.permission.ACCESS_FINE_LOCATION,
        Manifest.permission.ACCESS_COARSE_LOCATION
    )
)

De gebruikersinterface aansturen vanuit de status

Toon verschillende inhoud op basis van de toestemmingsstatus: toon de functie als de machtiging is toegekend en anders een knop om haar aan te vragen. Zo blijft het scherm reactief en overzichtelijk.

if (hasCamera) {
    CameraPreview()
} else {
    Button(onClick = { launcher.launch(Manifest.permission.CAMERA) }) {
        Text("Grant camera access")
    }
}

De optie Accompanist Permissions

De bibliotheek Accompanist Permissions biedt helpers op een hoger niveau, zoals rememberPermissionState. Veel teams geven de voorkeur aan de onbewerkte Activity Result API om een extra afhankelijkheid te vermijden; beide opties zijn geldig.

Vraag geen machtiging aan bij het starten

Vermijd het starten van een machtigingsaanvraag zodra een scherm verschijnt. Wacht totdat de gebruiker op een actie tikt waarvoor de machtiging duidelijk nodig is. Aanvragen in de juiste context leiden tot veel hogere toekenningspercentages.

Houd rekening met configuratiewijzigingen

rememberLauncherForActivityResult blijft behouden tijdens recompositie en het Activity Result-framework levert resultaten correct af, ook bij configuratiewijzigingen zoals een schermrotatie. Je hoeft die infrastructuur niet zelf te beheren.

Korte controle

Test je begrip van het aanvragen van machtigingen.

Samenvatting

Je hebt machtigingen op de moderne manier aangevraagd:

  • Gebruik rememberLauncherForActivityResult met het contract RequestPermission
  • Controleer eerst en roep daarna launcher.launch(permission) aan
  • Houd de toestemmingsstatus bij in de status om de gebruikersinterface aan te sturen
  • Gebruik RequestMultiplePermissions voor meerdere machtigingen tegelijk

Volgende: afwijzingen verwerken en een toelichting tonen.

Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
36
Lessen
152

Veelgestelde vragen

Is de les “Machtigingen aanvragen in Compose” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “Machtigingen aanvragen in Compose”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.

Wat leer ik in “Machtigingen aanvragen in Compose”?

Gebruik de Accompanist- of activity result-API's. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Android Academy te beginnen?

Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Machtigingen aanvragen in Compose”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Android Academy?

Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Het Android-machtigingsmodel
  2. Machtigingen aanvragen in Compose
  3. Afwijzingen en toelichting afhandelen
  4. Best practices voor privacy
← Terug naar Android Academy