Sobes.tech
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:

  • PendingIntent wordt doorgegeven aan een andere applicatie.
  • PendingIntent behoudt de permissies van de oorspronkelijke applicatie.

Types PendingIntent:

  • getActivity(): om een Activity te 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 een Service te 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.