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. Mit dieser Vorlage können Sie Benachrichtigungen über eingehende oder laufende Anrufe erstellen. Die Vorlage unterstützt Benachrichtigungen im Großformat, die Anruferinformationen und erforderliche Aktionen wie das Annehmen oder Ablehnen von Anrufen enthalten.
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 für laufende Anrufe.
- Annehmen oder Auflegen für die Anrufer-ID.
Aktionen in diesem Stil werden als Schaltflächen dargestellt. Das System fügt automatisch passende Symbole und Text hinzu. Die manuelle Beschriftung 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 einfaches Objekt, das zwischen verschiedenen Apps und Prozessen übergeben werden kann. Das System ist für die Verwaltung der Lebensdauer des Tokens und dafür verantwortlich, dass das PendingIntent auch dann verwendet werden kann, wenn die App, die es erstellt hat, nicht mehr ausgeführt wird. Wenn Sie einer anderen App die Berechtigung PendingIntent erteilen, gewähren Sie ihr die Berechtigung, den angegebenen Vorgang 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 incoming 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.
// For demonstrative purposes only, should use a well-defined Intents. val contentIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val declineIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val hangupIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val answerIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) // Create a call style notification for an incoming call. val builderForIncomingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forIncomingCall(incomingCaller, 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 builderForOngoingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forOngoingCall(callerAtOtherEnd, hangupIntent)) .addPerson(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 = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(caller)
Kompatibilität mit mehr Android-Versionen
Verknüpfen Sie CallStyle-Benachrichtigungen in API-Version 30 oder früher 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 niedriger ein ähnliches Ranking erzielen, indem sie mit der Methode setColorized() als farbig markiert werden.
Verwenden Sie die Telecom APIs mit CallStyle-Benachrichtigungen. Weitere Informationen finden Sie unter Übersicht über das Telekommunikations-Framework.