Middle
O que é PendingIntent?
sobes.tech IA
Resposta da IA
O PendingIntent é um token que fornece a outra aplicação a capacidade de executar parte do código em nome da sua aplicação com as suas permissões.
É utilizado para:
- Notificações (iniciar uma atividade ao clicar na notificação).
- Widgets de desktop (processar cliques do utilizador).
- Serviços de agendamento (tarefas recorrentes com AlarmManager).
Principais diferenças em relação a um Intent normal:
PendingIntenté passado para outra aplicação.PendingIntentmantém as permissões da aplicação original.
Tipos de PendingIntent:
getActivity(): Para iniciar umaActivity.// Criar PendingIntent para iniciar uma Activity val intent = Intent(context, TargetActivity::class.java) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)getService(): Para iniciar umService.// Criar PendingIntent para iniciar um Service val intent = Intent(context, MyService::class.java) val pendingIntent = PendingIntent.getService(context, 0, intent, 0)getBroadcast(): Para enviar uma mensagem broadcast.// Criar PendingIntent para enviar um Broadcast val intent = Intent("MY_ACTION") val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
Flags de PendingIntent que influenciam o seu comportamento:
| Flag | Descrição |
|---|---|
FLAG_ONE_SHOT |
O PendingIntent pode ser usado apenas uma vez. |
FLAG_NO_CREATE |
Se o PendingIntent não existir, não criá-lo, retornar null. |
FLAG_CANCEL_CURRENT |
Se já existir um PendingIntent com o mesmo Intent, cancelá-lo e criar um novo. |
FLAG_UPDATE_CURRENT |
Se já existir um PendingIntent com o mesmo Intent, atualizar os Extras. |
FLAG_IMMUTABLE |
O PendingIntent não pode ser alterado por outras aplicações (recomendado). |
Ao usar PendingIntent, é importante especificar códigos de requisição únicos (segundo argumento nos métodos getActivity, getService, getBroadcast) para diferenciá-los.