Sobes.tech
Middle

Čo je PendingIntent?

sobes.tech AI

Odpoveď od AI

PendingIntent predstavuje token, ktorý umožňuje inej aplikácii vykonať časť kódu v mene vašej aplikácie s vašimi povoleniami.

Používa sa na:

  • oznámenia (spustenie aktivity pri kliknutí na oznámenie)
  • widgety pracovnej plochy (spracovanie kliknutí používateľa)
  • služby plánovača (opakujúce sa úlohy s AlarmManager)

Hlavné rozdiely od bežného Intent:

  • PendingIntent sa odovzdáva inej aplikácii
  • PendingIntent uchováva povolenia pôvodnej aplikácie

Typy PendingIntent:

  • getActivity(): na spustenie Activity
    // Vytvorenie PendingIntent na spustenie Activity
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): na spustenie Service
    // Vytvorenie PendingIntent na spustenie Service
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): na odoslanie broadcast správy
    // Vytvorenie PendingIntent na odoslanie Broadcast
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

Príznaky PendingIntent ovplyvňujú správanie:

Príznak Popis
FLAG_ONE_SHOT PendingIntent je možné použiť iba raz.
FLAG_NO_CREATE Ak PendingIntent neexistuje, nevytvárať ho, vrátiť null.
FLAG_CANCEL_CURRENT Ak už existuje PendingIntent s rovnakým Intentom, zrušiť ho a vytvoriť nový.
FLAG_UPDATE_CURRENT Ak už existuje PendingIntent s rovnakým Intentom, aktualizovať jeho Extra.
FLAG_IMMUTABLE PendingIntent nemôže byť zmenený inými aplikáciami (odporúča sa).

Pri používaní PendingIntent je dôležité uvádzať jedinečné kódy požiadaviek (druhý argument v metódach getActivity, getService, getBroadcast), aby sa odlíšili.