Middle
Qu'est-ce que PendingIntent ?
sobes.tech IA
Réponse de l'IA
PendingIntent est un jeton qui permet à une autre application d’exécuter une partie du code au nom de votre application avec vos autorisations.
Il est utilisé pour :
- Notifications (lancer une activité lors du clic sur la notification).
- Widgets de bureau (traitement des clics de l’utilisateur).
- Services de planification (tâches récurrentes avec AlarmManager).
Principales différences avec un Intent normal :
PendingIntentest transmis à une autre application.PendingIntentconserve les autorisations de l’application d’origine.
Types de PendingIntent :
getActivity(): pour lancer uneActivity.// Création d’un PendingIntent pour lancer une Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): pour lancer unService.// Création d’un PendingIntent pour lancer un Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): pour envoyer un message broadcast.// Création d’un PendingIntent pour envoyer un Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Les drapeaux de PendingIntent influencent leur comportement :
| Drapeau | Description |
|---|---|
FLAG_ONE_SHOT |
Le PendingIntent ne peut être utilisé qu’une seule fois. |
FLAG_NO_CREATE |
Si le PendingIntent n’existe pas, ne pas le créer, retourner null. |
FLAG_CANCEL_CURRENT |
Si un PendingIntent avec le même Intent existe, l’annuler et en créer un nouveau. |
FLAG_UPDATE_CURRENT |
Si un PendingIntent avec le même Intent existe, mettre à jour ses Extras. |
FLAG_IMMUTABLE |
Le PendingIntent ne peut pas être modifié par d’autres applications (recommandé). |
Lors de l’utilisation de PendingIntent, il est important de spécifier des codes de requête uniques (le deuxième argument dans les méthodes getActivity, getService, getBroadcast) pour les différencier.