En Android 12.0 (nivel de API 31) y versiones posteriores, el sistema proporciona la
Plantilla de notificación CallStyle
para distinguir las notificaciones de llamadas de
otros tipos de notificaciones. Usa esta plantilla para crear registros de entrada o
notificaciones de llamadas en curso. La plantilla admite notificaciones en formato grande
que incluyen información de la persona que llama y las acciones requeridas, como responder o
el rechazo de llamadas.
Dado que las llamadas entrantes y en curso son eventos de alta prioridad, estas notificaciones para recibir la prioridad principal en el panel de notificaciones. Esta clasificación también permite para reenviar esas llamadas con prioridad a otros dispositivos.
La plantilla de notificación CallStyle
incluye las siguientes acciones obligatorias:
- Responder o Rechazar cuando recibas llamadas entrantes
- Colgar para las llamadas en curso.
- Responde o coloca para filtrar la llamada.
Las acciones en este estilo aparecen como botones, y el sistema agrega automáticamente los íconos y el texto adecuados. No se admite el etiquetado manual de los botones. Para obtener más información sobre los principios de diseño de notificaciones, consulta Notificaciones.
Las acciones requeridas se pasan como intents, por ejemplo, hangupIntent
y
answerIntent
en las siguientes secciones. Cada una de ellas hace referencia a un
token que mantiene el sistema. El token es un objeto ligero que
se pueden pasar entre diferentes apps y procesos. El sistema es
responsable de administrar el ciclo de vida del token y garantizar que el
PendingIntent
se puede usar incluso si la app que lo creó ya no lo es.
en ejecución. Cuando le asignas un PendingIntent
a otra app, otorgas
el permiso para realizar la operación especificada, como rechazar o responder.
Este permiso se otorga incluso si la app que creó el intent
no se está ejecutando actualmente. Para obtener más información, consulta la documentación de referencia
para PendingIntent
.
A partir de Android 14 (nivel de API 34), puedes configurar las notificaciones de llamadas
para que no se puedan descartar. Para hacerlo, usa las notificaciones de CallStyle
con la
Notification.FLAG_ONGOING_EVENT
a
Notification.Builder#setOngoing(true)
A continuación, se muestran ejemplos de cómo usar varios métodos con CallStyle
.
notificación.
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();
Llamada entrante
Usa el método forIncomingCall()
para crear una notificación con estilo de llamada para un
llamada entrante.
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);
Llamada en curso
Usa el método forOngoingCall()
para crear una notificación con estilo de llamada para un
llamada en curso.
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);
Cómo filtrar una llamada
Usa el método forScreeningCall()
para crear una notificación con estilo de llamada para
filtrar una llamada.
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);
Cómo brindar compatibilidad con más versiones de Android
Asociar las notificaciones de CallStyle
en la API 30 o versiones anteriores con un
servicio en primer plano para asignarles la clasificación alta que se les otorga en la API
nivel 31 o posterior. Además, notificaciones de CallStyle
en la versión de API 30
o anteriores pueden obtener una clasificación similar marcando la notificación como
colorearse con el método setColorized()
.
Usa las APIs de Telecom con notificaciones de CallStyle
. Para obtener más información, consulta
Descripción general del marco de trabajo de las telecomunicaciones.