Middle
Co je to PendingIntent?
sobes.tech AI
Odpověď od AI
Toto je obal kolem Intent, který deleguje oprávnění jiné aplikaci, aby tento Intent v našem jménu v budoucnu vykonala.
Klíčové vlastnosti:
- Odložené provedení:
Intentse nespouští ihned, ale později jinou komponentou. - Oprávnění: Komponenta, které je předán
PendingIntent, získává stejná oprávnění jako naše aplikace k provedení tohotoIntent. - Unikátnost: Různé
PendingIntentjsou považovány za stejné, pokud mají shodný typ komponenty, akci (action), data (data), kategorie (categories) a příznaky (flags). - Použití: Často se používá pro oznámení, úlohy na pozadí, widgety a AlarmManager.
Typy PendingIntent odpovídají typům cílových komponent:
getActivity(Context context, int requestCode, Intent intent, int flags): spouštíActivity.getBroadcast(Context context, int requestCode, Intent intent, int flags): vysílá broadcast.getService(Context context, int requestCode, Intent intent, int flags): spouští nebo se připojuje keService.getForegroundService(Context context, int requestCode, Intent intent, int flags): spouštíForeground Service.
// Příklad vytvoření PendingIntent pro oznámení
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0, // requestCode, slouží k odlišení PendingIntent
notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Značky pro řízení chování
);
// Tento pendingIntent lze nyní předat, například, do oznámení
Značky (flags) ovlivňují chování při vytváření nebo aktualizaci existujícího PendingIntent:
FLAG_ONE_SHOT:PendingIntentlze použít pouze jednou.FLAG_NO_CREATE: PokudPendingIntentneexistuje, nevytvoří se, vracínull.FLAG_CANCEL_CURRENT: Pokud již existujePendingIntentse stejnými parametry, je zrušen a vytvoří se nový.FLAG_UPDATE_CURRENT: Pokud již existujePendingIntentse stejnými parametry, aktualizují se jeho dodatečné údaje (Extra data).FLAG_IMMUTABLE(povinné od S/API 31 ve většině případů): Vytváří neměnnýPendingIntent.FLAG_MUTABLE: Vytváří měnitelnýPendingIntent(používejte opatrně, může být zranitelný).
Volba správného příznaku je klíčová pro správnou funkčnost a bezpečnost.