Unter Android 12.0 (API-Ebene 31) und höher stellt das System die Benachrichtigungsvorlage CallStyle bereit, um Anrufbenachrichtigungen von anderen Arten von Benachrichtigungen zu unterscheiden. Mit dieser Vorlage können Sie Benachrichtigungen für eingehende oder laufende Anrufe erstellen. Die Vorlage unterstützt großformatige Benachrichtigungen mit Anruferinformationen und erforderlichen Aktionen wie Annehmen oder Ablehnen von Anrufen.
Da eingehende und laufende Anrufe Ereignisse mit hoher Priorität sind, werden diese Benachrichtigungen in der Benachrichtigungsleiste ganz oben angezeigt. Durch diese Priorisierung kann das System diese Anrufe auch an andere Geräte weiterleiten.
Die Benachrichtigungsvorlage CallStyle enthält die folgenden erforderlichen Aktionen:
- Annehmen oder Ablehnen bei eingehenden Anrufen.
- Auflegen bei laufenden Anrufen.
- Annehmen oder Auflegen für die Anruf-Filterung.
Aktionen in diesem Stil werden als Schaltflächen dargestellt. Das System fügt automatisch passende Symbole und Text hinzu. Das manuelle Labeln der Schaltflächen wird nicht unterstützt. Weitere Informationen zu den Designprinzipien für Benachrichtigungen finden Sie unter Benachrichtigungen.
Die erforderlichen Aktionen werden in den folgenden Abschnitten als Intents wie hangupIntent und answerIntent übergeben. Jeder dieser Werte ist ein Verweis auf ein vom System verwaltetes Token. Das Token ist ein kleines Objekt, das zwischen verschiedenen Apps und Prozessen übergeben werden kann. Das System ist für die Verwaltung der Lebensdauer des Tokens verantwortlich und dafür, dass der PendingIntent auch dann verwendet werden kann, wenn die App, die ihn erstellt hat, nicht mehr ausgeführt wird. Wenn Sie einer anderen App die PendingIntent erteilen, gewähren Sie ihr die Berechtigung, die angegebene Aktion auszuführen, z. B. Anrufe abzulehnen oder anzunehmen.
Diese Berechtigung wird auch dann erteilt, wenn die App, die den Intent erstellt hat, nicht ausgeführt wird. Weitere Informationen finden Sie in der Referenzdokumentation zu PendingIntent.
Ab Android 14 (API-Level 34) können Sie Anrufbenachrichtigungen so konfigurieren, dass sie nicht geschlossen werden können. Verwenden Sie dazu CallStyle-Benachrichtigungen mit Notification.FLAG_ONGOING_EVENT über Notification.Builder#setOngoing(true).
Im Folgenden finden Sie Beispiele für die Verwendung verschiedener Methoden mit der CallStyle-Benachrichtigung.
// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build()
Eingehender Anruf
Verwenden Sie die Methode forIncomingCall(), um eine Benachrichtigung im Anrufstil für einen eingehenden Anruf zu erstellen.
// 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)
Aktiver Anruf
Verwenden Sie die Methode forOngoingCall(), um eine Benachrichtigung im Anrufstil für einen laufenden Anruf zu erstellen.
// 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)
Anruf filtern
Verwenden Sie die Methode forScreeningCall(), um eine Benachrichtigung im Anrufstil für die Anrufer-ID zu erstellen.
// 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)
Kompatibilität mit mehr Android-Versionen
Verknüpfen Sie CallStyle-Benachrichtigungen in API-Versionen 30 oder niedriger mit einem Dienst im Vordergrund, um ihnen den hohen Rang zuzuweisen, den sie in API-Level 31 oder höher erhalten. Außerdem können CallStyle-Benachrichtigungen in API-Version 30 oder früher ein ähnliches Ranking erreichen, indem die Benachrichtigung mit der Methode setColorized() als farbig markiert wird.
Verwenden Sie die Telecom APIs mit CallStyle-Benachrichtigungen. Weitere Informationen finden Sie unter Übersicht über das Telekommunikations-Framework.