Machtigingen aanvragen in Compose
Gebruik de Accompanist- of activity result-API's.
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_GRANTEDStatus 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
rememberLauncherForActivityResultmet het contractRequestPermission - Controleer eerst en roep daarna
launcher.launch(permission)aan - Houd de toestemmingsstatus bij in de status om de gebruikersinterface aan te sturen
- Gebruik
RequestMultiplePermissionsvoor meerdere machtigingen tegelijk
Volgende: afwijzingen verwerken en een toelichting tonen.
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
- Het Android-machtigingsmodel
- Machtigingen aanvragen in Compose
- Afwijzingen en toelichting afhandelen
- Best practices voor privacy