Demander des autorisations dans Compose
Utilisez les API Accompanist ou de résultat d'activité.
Demander des autorisations dans Compose est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Demander des autorisations dans Compose
Dans Jetpack Compose, vous demandez les autorisations à l’exécution à l’aide de l’API Activity Result, encapsulée par rememberLauncherForActivityResult. Cela évite d’utiliser l’ancien rappel onRequestPermissionsResult.
Le contrat RequestPermission
L’API Activity Result utilise des contrats qui définissent l’entrée et la sortie. ActivityResultContracts.RequestPermission() reçoit une chaîne d’autorisation et renvoie un résultat d’autorisation sous forme de Boolean.
Créer un lanceur
rememberLauncherForActivityResult crée un lanceur lié à la composition. Vous lui transmettez le contrat et un rappel qui reçoit le résultat.
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.RequestPermission()
) { isGranted ->
if (isGranted) {
// permission granted, use the feature
} else {
// permission denied
}
}Lancer la demande
Appelez launcher.launch avec l’autorisation souhaitée. Le système affiche sa boîte de dialogue et votre rappel est appelé avec le choix de l’utilisateur.
Button(onClick = {
launcher.launch(Manifest.permission.CAMERA)
}) {
Text("Enable Camera")
}Vérifier avant de demander
Ne lancez pas aveuglément une demande. Vérifiez d’abord si l’autorisation est déjà accordée et ne la demandez que si ce n’est pas le cas.
val context = LocalContext.current
val alreadyGranted = ContextCompat.checkSelfPermission(
context, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTEDSuivre l’état dans Compose
Conservez l’état actuel de l’autorisation dans un état afin que l’interface puisse réagir. Mettez-le à jour dans le rappel du lanceur.
var hasCamera by remember {
mutableStateOf(
ContextCompat.checkSelfPermission(
context, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED
)
}
val launcher = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted -> hasCamera = granted }Demander plusieurs autorisations
Pour demander plusieurs autorisations à la fois, utilisez le contrat RequestMultiplePermissions. Le rappel reçoit une correspondance entre chaque autorisation et son état d’octroi.
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
)
)Piloter l’interface depuis l’état
Affichez un contenu différent selon l’état de l’autorisation : si elle est accordée, affichez la fonctionnalité ; sinon, affichez un bouton pour la demander. L’écran reste ainsi réactif et clair.
if (hasCamera) {
CameraPreview()
} else {
Button(onClick = { launcher.launch(Manifest.permission.CAMERA) }) {
Text("Grant camera access")
}
}L’option Accompanist Permissions
La bibliothèque Accompanist Permissions propose des outils de plus haut niveau, comme rememberPermissionState. De nombreuses équipes préfèrent l’API Activity Result sans abstraction supplémentaire afin d’éviter une dépendance additionnelle ; les deux approches sont valides.
Ne pas demander au lancement
Évitez de déclencher une demande d’autorisation dès qu’un écran apparaît. Attendez que l’utilisateur appuie sur une action qui en a clairement besoin. Les demandes effectuées dans leur contexte obtiennent un taux d’acceptation bien plus élevé.
Tenir compte des changements de configuration
rememberLauncherForActivityResult survit à la recomposition, et le framework Activity Result fournit correctement les résultats même lors de changements de configuration, comme une rotation. Vous n’avez pas à gérer vous-même cette infrastructure.
Vérification rapide
Testez votre compréhension de la demande d’autorisations.
Récapitulatif
Vous avez appris à demander des autorisations avec l’approche moderne :
- Utilisez
rememberLauncherForActivityResultavec le contratRequestPermission - Vérifiez d’abord, puis appelez
launcher.launch(permission) - Suivez l’état d’octroi dans un état pour piloter l’interface
- Utilisez
RequestMultiplePermissionspour plusieurs autorisations à la fois
Ensuite : gérer les refus et afficher une explication.
Questions Fréquemment Posées
La leçon « Demander des autorisations dans Compose » est-elle gratuite ?
Oui — le texte complet de « Demander des autorisations dans Compose » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Demander des autorisations dans Compose » ?
Utilisez les API Accompanist ou de résultat d'activité. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Demander des autorisations dans Compose » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Le modèle d'autorisations Android
- Demander des autorisations dans Compose
- Gérer les refus et fournir une explication
- Bonnes pratiques de confidentialité