Middle
Czym jest PendingIntent?
sobes.tech AI
Odpowiedź od AI
PendingIntent to token, który umożliwia innemu aplikacji wykonanie części kodu w imieniu Twojej aplikacji z Twoimi uprawnieniami.
Jest używany do:
- Powiadomień (uruchomienie aktywności po kliknięciu powiadomienia).
- Widżetów pulpitu (obsługa kliknięć użytkownika).
- Usług planistycznych (zadania powtarzające się z AlarmManager).
Główne różnice w stosunku do zwykłego Intent:
PendingIntentjest przekazywany do innej aplikacji.PendingIntentzachowuje uprawnienia oryginalnej aplikacji.
Typy PendingIntent:
getActivity(): do uruchomieniaActivity.// Tworzenie PendingIntent do uruchomienia Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): do uruchomieniaService.// Tworzenie PendingIntent do uruchomienia Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): do wysłania wiadomości broadcast.// Tworzenie PendingIntent do wysłania Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Flagi PendingIntent wpływają na zachowanie:
| Flaga | Opis |
|---|---|
FLAG_ONE_SHOT |
PendingIntent można użyć tylko raz. |
FLAG_NO_CREATE |
Jeśli PendingIntent nie istnieje, nie twórz go, zwróć null. |
FLAG_CANCEL_CURRENT |
Jeśli istnieje już PendingIntent z tym samym Intent, anuluj go i utwórz nowy. |
FLAG_UPDATE_CURRENT |
Jeśli istnieje już PendingIntent z tym samym Intent, zaktualizuj jego Extras. |
FLAG_IMMUTABLE |
PendingIntent nie może być zmieniony przez inne aplikacje (zalecane). |
Podczas korzystania z PendingIntent ważne jest, aby podać unikalne kody zapytań (drugi argument w metodach getActivity, getService, getBroadcast), aby je odróżnić.