Sur Android 12.0 (niveau d'API 31) et versions ultérieures, le système fournit le modèle de notification CallStyle pour distinguer les notifications d'appel des autres types de notifications. Utilisez ce modèle pour créer des notifications d'appels entrants ou en cours. Le modèle est compatible avec les notifications grand format qui incluent les informations sur l'appelant et les actions requises, comme répondre ou refuser des appels.
Étant donné que les appels entrants et en cours sont des événements de priorité élevée, ces notifications sont prioritaires dans le volet des notifications. Ce classement permet également au système de transférer ces appels prioritaires vers d'autres appareils.
Le modèle de notification CallStyle inclut les actions requises suivantes :
- Répondre ou Refuser pour les appels entrants.
- Raccrochez pour les appels en cours.
- Répondre ou Raccrocher pour le filtrage d'appel.
Les actions de ce style s'affichent sous forme de boutons, et le système ajoute automatiquement les icônes et le texte appropriés. L'étiquetage manuel des boutons n'est pas pris en charge. Pour en savoir plus sur les principes de conception des notifications, consultez Notifications.
Les actions requises sont transmises en tant qu'intentions, telles que hangupIntent et answerIntent dans les sections suivantes. Chacun d'eux fait référence à un jeton géré par le système. Le jeton est un objet léger qui peut être transmis entre différentes applications et différents processus. Le système est responsable de la gestion de la durée de vie du jeton et de la garantie que le PendingIntent est utilisable même si l'application qui l'a créé n'est plus en cours d'exécution. Lorsque vous accordez une PendingIntent à une autre application, vous lui donnez l'autorisation d'effectuer l'opération spécifiée, comme refuser ou répondre.
Cette autorisation est accordée même si l'application qui a créé l'intention n'est pas en cours d'exécution. Pour en savoir plus, consultez la documentation de référence sur PendingIntent.
À partir d'Android 14 (niveau d'API 34), vous pouvez configurer les notifications d'appel pour qu'elles ne puissent pas être ignorées. Pour ce faire, utilisez les notifications CallStyle avec Notification.FLAG_ONGOING_EVENT via Notification.Builder#setOngoing(true).
Voici des exemples d'utilisation de différentes méthodes avec la notification CallStyle.
// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build()
Appel entrant
Utilisez la méthode forIncomingCall() pour créer une notification de style appel pour un appel entrant.
// 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)
Appel en cours
Utilisez la méthode forOngoingCall() pour créer une notification de style appel pour un appel en cours.
// 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)
Filtrer un appel
Utilisez la méthode forScreeningCall() pour créer une notification de style appel pour filtrer un appel.
// 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)
Assurer la compatibilité avec un plus grand nombre de versions d'Android
Associez les notifications CallStyle sur les versions d'API 30 ou antérieures à un service de premier plan afin de leur attribuer le rang élevé qui leur est attribué dans le niveau d'API 31 ou ultérieur. De plus, les notifications CallStyle sur la version 30 de l'API ou une version antérieure peuvent obtenir un classement similaire en marquant la notification comme colorée à l'aide de la méthode setColorized().
Utilisez les API Telecom avec les notifications CallStyle. Pour en savoir plus, consultez la présentation du framework Telecom.