Benachrichtigung im Anrufstil für Anruf-Apps erstellen

Unter Android 12.0 (API-Level 31) und höher stellt das System den CallStyle-Benachrichtigungsvorlage, um Anrufbenachrichtigungen von andere Arten von Benachrichtigungen. Verwenden Sie diese Vorlage, um eingehende oder Benachrichtigungen zu laufenden Anrufen. Die Vorlage unterstützt großformatige Benachrichtigungen die Anruferinformationen und erforderliche Aktionen wie Anrufe ablehnen.

Da eingehende und laufende Anrufe Ereignisse mit hoher Priorität sind, werden diese Benachrichtigungen erhalten in der Benachrichtigungsleiste höchste Priorität. Dieses Ranking ermöglicht auch um diese priorisierten Anrufe an andere Geräte weiterzuleiten.

Die Benachrichtigungsvorlage CallStyle enthält die folgenden erforderlichen Aktionen:

  • Annehmen oder Ablehnen für eingehende Anrufe
  • Beenden Sie für laufende Anrufe.
  • Annehmen oder Beenden für den Anruf-Filter

Aktionen in diesem Stil werden als Schaltflächen angezeigt. Das System fügt Symbole und Text anpassen. Die manuelle Beschriftung der Schaltflächen wird nicht unterstützt. Weitere Informationen zu den Prinzipien zur Gestaltung von Benachrichtigungen finden Sie unter Benachrichtigungen:

<ph type="x-smartling-placeholder">
</ph> Anrufbenachrichtigungen 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. Alle beziehen sich auf ein Token, das vom System verwaltet wird. Das Token ist ein einfaches Objekt, zwischen verschiedenen Apps und Prozessen übertragen werden. Das System ist die Lebensdauer des Tokens zu verwalten und sicherzustellen, PendingIntent kann auch dann verwendet werden, wenn die App, die sie erstellt hat, nicht mehr ausgeführt wird. Wenn Sie einer anderen App ein PendingIntent zuweisen, gewähren Sie 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, wird derzeit nicht ausgeführt. Weitere Informationen finden Sie in der Referenzdokumentation. für PendingIntent.

Ab Android 14 (API-Level 34) kannst du Anrufbenachrichtigungen konfigurieren nicht entfernbar ist. Verwende dazu CallStyle-Benachrichtigungen mit dem Notification.FLAG_ONGOING_EVENT bis Notification.Builder#setOngoing(true)

Im Folgenden findest du Beispiele für die Verwendung verschiedener Methoden mit dem CallStyle. Benachrichtigung.

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 Benachrichtigung im Aufrufstil für eine Eingehender Anruf.

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 Benachrichtigung im Aufrufstil für eine laufenden Anrufs.

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 Benachrichtigung im Aufrufstil zu erstellen für Anruf-Filter prüfen.

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 ermöglichen

Verknüpfen Sie CallStyle-Benachrichtigungen in API-Version 30 oder niedriger mit einem Dienste im Vordergrund, um ihnen den hohen Rang zuzuweisen, den sie in der API erhalten. ab Level 31. Zusätzlich CallStyle-Benachrichtigungen bei API-Version 30 oder früher, können ein ähnliches Ranking erzielen, indem sie die Benachrichtigung als mit der Methode setColorized() eingefärbt.

Verwenden Sie die Telecom APIs mit CallStyle-Benachrichtigungen. Weitere Informationen finden Sie unter Telecom-Framework – Übersicht