No Android 12.0 (nível 31 da API) e versões mais recentes, o sistema oferece a
Modelo de notificação do CallStyle
para diferenciar as notificações de chamada das
e outros tipos de notificações. Use este modelo para criar mensagens recebidas ou
notificações de chamadas em andamento. O modelo é compatível com notificações de formato grande
que incluam informações sobre o autor da chamada e as ações necessárias, como atender ou
chamadas em espera.
Como as chamadas recebidas e em andamento são eventos de alta prioridade, essas notificações receber prioridade máxima na aba de notificações. Essa classificação também permite que para encaminhar essas chamadas priorizadas para outros dispositivos.
O modelo de notificação CallStyle
inclui as seguintes ações necessárias:
- Atender ou Recusar chamadas recebidas.
- Desligue para chamadas em andamento.
- Atender ou Desligar para usar o filtro de ligações.
As ações nesse estilo aparecem como botões, e o sistema adiciona automaticamente ícones e textos adequados. A rotulagem manual dos botões não é compatível. Para saber mais sobre os princípios de design de notificações, consulte Notificações.
As ações necessárias são transmitidas como intents, por exemplo, hangupIntent
e
answerIntent
nas seções a seguir. Cada um deles é uma referência a um
token mantido pelo sistema. O token é um objeto leve que
podem ser transmitidos entre diferentes aplicativos e processos. O sistema é
responsável por gerenciar o ciclo de vida do token e garantir que
PendingIntent
poderá ser usada mesmo que o app que o criou não esteja mais
em execução. Ao dar um PendingIntent
a outro app, você está concedendo
a permissão para executar a operação especificada, como recusar ou responder.
Essa permissão será concedida mesmo se o app que criou a intent
não está em execução no momento. Para mais informações, consulte a documentação de referência
para PendingIntent
.
A partir do Android 14 (nível 34 da API), é possível configurar notificações de chamada
para não ser dispensável. Para fazer isso, use as notificações CallStyle
com o
De Notification.FLAG_ONGOING_EVENT
a
Notification.Builder#setOngoing(true)
Confira abaixo exemplos de como usar vários métodos com o CallStyle
notificação.
Kotlin
// Create a new call, setting the user as the caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as the caller. Person incomingCaller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
Chamada recebida
Use o método forIncomingCall()
para criar uma notificação de estilo de chamada para um
receber uma ligação.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incomingCaller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incomingCaller);
Chamada em andamento
Use o método forOngoingCall()
para criar uma notificação de estilo de chamada para um
chamada em andamento.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOngoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOngoingCall(caller, hangupIntent)) .addPerson(second_caller);
Filtrar uma chamada
Use o método forScreeningCall()
para criar uma notificação de estilo de chamada para
filtrar uma ligação.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
// Create a call style notification for screening a call. Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
Oferecer compatibilidade com mais versões do Android
Associe notificações do CallStyle
na versão 30 ou anterior da API a um
serviços em primeiro plano para atribuir a eles a alta classificação que recebem na API
nível 31 ou mais recente. Além disso, notificações CallStyle
na versão 30 da API
ou anteriores podem conseguir uma classificação semelhante ao marcar a notificação como
colorido usando o método setColorized()
.
Usar as APIs de telecomunicações com notificações CallStyle
. Para mais informações, consulte
Visão geral do framework de telecomunicações.