Middle
Co je to PendingIntent?
sobes.tech AI
Odpověď od AI
PendingIntent je token, který umožňuje jiné aplikaci spustit část kódu jménem vaší aplikace s vašimi oprávněními.
Používá se pro:
- Oznámení (spuštění aktivity po kliknutí na oznámení).
- Widgety na ploše (zpracování kliknutí uživatele).
- Plánované služby (opakované úkoly s AlarmManager).
Hlavní rozdíly oproti běžnému Intent:
PendingIntentje předáván jiné aplikaci.PendingIntentzachovává oprávnění původní aplikace.
Typy PendingIntent:
getActivity(): pro spuštěníActivity.// Vytvoření PendingIntent pro spuštění Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): pro spuštěníService.// Vytvoření PendingIntent pro spuštění Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): pro odeslání broadcast zprávy.// Vytvoření PendingIntent pro odeslání Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Příznaky PendingIntent ovlivňují chování:
| Znak | Popis |
|---|---|
FLAG_ONE_SHOT |
PendingIntent lze použít pouze jednou. |
FLAG_NO_CREATE |
Pokud PendingIntent neexistuje, nevytvářejte jej, vraťte null. |
FLAG_CANCEL_CURRENT |
Pokud již existuje PendingIntent se stejným Intentem, zrušte jej a vytvořte nový. |
FLAG_UPDATE_CURRENT |
Pokud již existuje PendingIntent se stejným Intentem, aktualizujte jeho Extra. |
FLAG_IMMUTABLE |
PendingIntent nemůže být změněn jinými aplikacemi (doporučeno). |
Při používání PendingIntent je důležité uvést jedinečné kódy požadavků (druhý argument v metodách getActivity, getService, getBroadcast), aby bylo možné je odlišit.