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:
PendingIntentsa odovzdáva inej aplikáciiPendingIntentuchováva povolenia pôvodnej aplikácie
Typy PendingIntent:
getActivity(): na spustenieActivity// Vytvorenie PendingIntent na spustenie Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): na spustenieService// 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.