Middle
Cos'è PendingIntent?
sobes.tech AI
Risposta dell'AI
PendingIntent è un token che fornisce a un'altra applicazione la possibilità di eseguire parte del codice a nome della tua applicazione con le tue autorizzazioni.
Viene utilizzato per:
- Notifiche (avviare un'attività al clic sulla notifica).
- Widget desktop (gestire i clic dell'utente).
- Servizi di pianificazione (compiti ricorrenti con AlarmManager).
Principali differenze rispetto a un Intent normale:
PendingIntentviene passato a un'altra applicazione.PendingIntentmantiene le autorizzazioni dell'applicazione originale.
Tipi di PendingIntent:
getActivity(): per avviare un'Activity.// Creare un PendingIntent per avviare un'Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): per avviare unService.// Creare un PendingIntent per avviare un Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): per inviare un messaggio broadcast.// Creare un PendingIntent per inviare un Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Le flag di PendingIntent influenzano il comportamento:
| Flag | Descrizione |
|---|---|
FLAG_ONE_SHOT |
Il PendingIntent può essere usato solo una volta. |
FLAG_NO_CREATE |
Se il PendingIntent non esiste, non crearlo, restituisce null. |
FLAG_CANCEL_CURRENT |
Se esiste già un PendingIntent con lo stesso Intent, annullarlo e crearne uno nuovo. |
FLAG_UPDATE_CURRENT |
Se esiste già un PendingIntent con lo stesso Intent, aggiorna i suoi Extra. |
FLAG_IMMUTABLE |
Il PendingIntent non può essere modificato da altre applicazioni (consigliato). |
Quando si utilizza PendingIntent, è importante specificare codici di richiesta univoci (secondo argomento nei metodi getActivity, getService, getBroadcast) per distinguerli.