Benachrichtigung im Anrufstil für Anruf-Apps erstellen

Unter Android 12.0 (API-Level 31) und höher stellt das System die Benachrichtigungsvorlage CallStyle bereit, um Anrufbenachrichtigungen von anderen Arten von Benachrichtigungen zu unterscheiden. Verwenden Sie diese Vorlage, um Benachrichtigungen über eingehende oder laufende Anrufe zu erstellen. Die Vorlage unterstützt großformatige Benachrichtigungen, die Anruferinformationen und erforderliche Aktionen wie das Annehmen oder Ablehnen von Anrufen enthalten.

Da eingehende und laufende Anrufe Ereignisse mit hoher Priorität haben, haben diese Benachrichtigungen in der Benachrichtigungsleiste oberste Priorität. Diese Einstufung ermöglicht es dem System auch, diese priorisierten Aufrufe an andere Geräte weiterzuleiten.

Die Benachrichtigungsvorlage CallStyle enthält die folgenden erforderlichen Aktionen:

  • Wählen Sie für eingehende Anrufe Annehmen oder Ablehnen aus.
  • Für laufende Anrufe belegen.
  • Annehmen oder Auflegen, um den Anruf-Filter zu aktivieren.

Aktionen in diesem Stil werden als Schaltflächen angezeigt und das System fügt automatisch entsprechende Symbole und Text hinzu. Schaltflächen können nicht manuell beschriftet werden. Weitere Informationen zu den Prinzipien für das Design von Benachrichtigungen finden Sie unter Benachrichtigungen.

Benachrichtigungen im Anrufstil mit beschrifteten Schaltflächen
Abbildung 1: CallStyle-Vorlage für eingehende und laufende Anrufe

Die erforderlichen Aktionen werden als Intents übergeben, z. B. hangupIntent und answerIntent in den folgenden Abschnitten. Jedes davon ist ein Verweis auf ein vom System verwaltetes Token. Das Token ist ein einfaches Objekt, das zwischen verschiedenen Anwendungen und Prozessen übergeben werden kann. Das System verwaltet die Lebensdauer des Tokens und sorgt dafür, dass PendingIntent auch dann verwendet werden kann, wenn die Anwendung, die es erstellt hat, nicht mehr ausgeführt wird. Wenn Sie einer anderen App eine PendingIntent zuweisen, erteilen Sie ihr die Berechtigung zum Ausführen des angegebenen Vorgangs, z. B. zum Ablehnen oder Antworten. Diese Berechtigung wird auch dann gewährt, wenn die App, die den Intent erstellt hat, derzeit 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 sich nicht schließen lassen. Verwenden Sie dazu CallStyle-Benachrichtigungen mit der Notification.FLAG_ONGOING_EVENT bis Notification.Builder#setOngoing(true).

Die folgenden Beispiele zeigen die Verwendung verschiedener Methoden mit der Benachrichtigung CallStlye.

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();

Eingehender Anruf

Verwenden Sie die Methode forIncomingCall(), um eine Anrufbenachrichtigung für einen eingehenden Anruf zu erstellen.

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);

Aktiver Anruf

Verwenden Sie die Methode forOngoingCall(), um eine Anrufbenachrichtigung für einen laufenden Anruf zu erstellen.

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);

Anrufe filtern

Verwenden Sie die Methode forScreeningCall(), um eine Anrufbenachrichtigung zum Filtern eines Anrufs zu erstellen.

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);

Kompatibilität mit mehr Android-Versionen

Ordnen Sie CallStyle-Benachrichtigungen in API-Version 30 oder niedriger einem Dienst im Vordergrund zu, um ihnen den hohen Rang zuzuweisen, den sie in API-Ebene 31 oder höher erhalten. Darüber hinaus können CallStyle-Benachrichtigungen unter API-Version 30 oder niedriger einen ähnlichen Rang erreichen, indem sie die Benachrichtigung mit der Methode setColorized() als farbig markieren.

Telecom APIs mit CallStyle-Benachrichtigungen verwenden. Weitere Informationen finden Sie unter Übersicht über das Telekommunikations-Framework.