Middle
Qu'est-ce que PendingIntent?
sobes.tech IA
Réponse de l'IA
Ceci est une enveloppe autour de Intent, qui délègue l'autorité à une autre application pour exécuter ce Intent en notre nom à l'avenir.
Caractéristiques clés:
- Exécution différée:
Intentn'est pas exécuté immédiatement, mais plus tard, par un autre composant. - Permissions: Le composant auquel le
PendingIntentest transmis obtient les mêmes permissions que notre application pour exécuter ceIntent. - Unicité: Différents
PendingIntentsont considérés comme identiques si le type de composant, l'action (action), les données (data), les catégories (categories) et les drapeaux (flags) correspondent. - Utilisation: Souvent utilisé pour les notifications, les tâches en arrière-plan, les widgets et AlarmManager.
Les types de PendingIntent correspondent aux types de composants cibles:
getActivity(Context context, int requestCode, Intent intent, int flags): lance uneActivity.getBroadcast(Context context, int requestCode, Intent intent, int flags): envoie un signal de diffusion.getService(Context context, int requestCode, Intent intent, int flags): lance ou se connecte à unService.getForegroundService(Context context, int requestCode, Intent intent, int flags): lance unForeground Service.
// Exemple de création de PendingIntent pour Notifications
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0, // requestCode, utilisé pour distinguer le PendingIntent
notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Flags pour gérer le comportement
);
// Maintenant, ce pendingIntent peut être transmis, par exemple, à une Notification
Les flags (flags) influencent le comportement lors de la création ou de la mise à jour d'un PendingIntent existant:
FLAG_ONE_SHOT:PendingIntentne peut être utilisé qu'une seule fois.FLAG_NO_CREATE: Si lePendingIntentn'existe pas, il n'est pas créé, retournenull.FLAG_CANCEL_CURRENT: Si unPendingIntentavec les mêmes paramètres existe déjà, il est annulé, et un nouveau est créé.FLAG_UPDATE_CURRENT: Si unPendingIntentavec les mêmes paramètres existe déjà, ses données supplémentaires (données extras) sont mises à jour.FLAG_IMMUTABLE(obligatoire à partir de S/API 31 dans la plupart des cas): Crée unPendingIntentimmuable.FLAG_MUTABLE: Crée unPendingIntentmutable (à utiliser avec précaution, peut être vulnérable).
Le choix de la bonne bannière est crucial pour le bon fonctionnement et la sécurité.