Middle
Wat is een PendingIntent?
sobes.tech AI
Antwoord van AI
PendingIntent is een token dat een andere applicatie de mogelijkheid biedt om een deel van de code uit te voeren namens jouw applicatie met jouw permissies.
Het wordt gebruikt voor:
- Meldingen (start een activiteit wanneer op de melding wordt geklikt).
- Desktop-widgets (verwerking van gebruikersklikken).
- Planner-services (herhaalde taken met AlarmManager).
Belangrijkste verschillen met een normaal Intent:
PendingIntentwordt doorgegeven aan een andere applicatie.PendingIntentbehoudt de permissies van de oorspronkelijke applicatie.
Types PendingIntent:
getActivity(): om eenActivityte starten.// Maak PendingIntent voor het starten van een Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): om eenServicete starten.// Maak PendingIntent voor het starten van een Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): om een broadcast-bericht te verzenden.// Maak PendingIntent voor het verzenden van een Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Flags van PendingIntent beïnvloeden het gedrag:
| Flag | Beschrijving |
|---|---|
FLAG_ONE_SHOT |
PendingIntent kan maar één keer worden gebruikt. |
FLAG_NO_CREATE |
Als de PendingIntent niet bestaat, maak het niet aan, retourneer null. |
FLAG_CANCEL_CURRENT |
Als er al een PendingIntent met dezelfde Intent bestaat, annuleer het en maak een nieuwe aan. |
FLAG_UPDATE_CURRENT |
Als er al een PendingIntent met dezelfde Intent bestaat, werk de Extras bij. |
FLAG_IMMUTABLE |
De PendingIntent kan niet worden gewijzigd door andere applicaties (aanbevolen). |
Bij gebruik van PendingIntent is het belangrijk om unieke request-codes (tweede argument in de methoden getActivity, getService, getBroadcast) op te geven om ze te onderscheiden.