Middle
¿Qué es PendingIntent?
sobes.tech AI
Respuesta de la IA
PendingIntent es un token que proporciona a otra aplicación la capacidad de ejecutar parte del código en nombre de su aplicación con sus permisos.
Se utiliza para:
- Notificaciones (iniciar una actividad al pulsar la notificación).
- Widgets de escritorio (procesar pulsaciones del usuario).
- Servicios de planificador (tareas recurrentes con AlarmManager).
Diferencias principales respecto a un Intent normal:
PendingIntentse pasa a otra aplicación.PendingIntentmantiene los permisos de la aplicación original.
Tipos de PendingIntent:
getActivity(): Para iniciar unaActivity.// Crear PendingIntent para iniciar una Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): Para iniciar unService.// Crear PendingIntent para iniciar un Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): Para enviar un mensaje broadcast.// Crear PendingIntent para enviar un Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Las banderas de PendingIntent afectan su comportamiento:
| Bandera | Descripción |
|---|---|
FLAG_ONE_SHOT |
El PendingIntent solo puede usarse una vez. |
FLAG_NO_CREATE |
Si el PendingIntent no existe, no crearlo, devolver null. |
FLAG_CANCEL_CURRENT |
Si ya existe un PendingIntent con el mismo Intent, cancelarlo y crear uno nuevo. |
FLAG_UPDATE_CURRENT |
Si ya existe un PendingIntent con el mismo Intent, actualizar sus Extras. |
FLAG_IMMUTABLE |
El PendingIntent no puede ser modificado por otras aplicaciones (recomendado). |
Al usar PendingIntent, es importante especificar códigos de solicitud únicos (el segundo argumento en los métodos getActivity, getService, getBroadcast) para distinguirlos.