Su Android 12.0 (livello API 31) e versioni successive, il sistema fornisce
Modello di notifica di CallStyle
per distinguere le notifiche delle chiamate da
e altri tipi di notifiche. Utilizza questo modello per creare file in entrata
avvisi di chiamata in corso. Il modello supporta le notifiche di grande formato
che includono informazioni sul chiamante e le azioni richieste, come rispondere o
un calo delle chiamate.
Poiché le chiamate in arrivo e in corso sono eventi ad alta priorità, queste notifiche riceveranno la massima priorità nell'area notifiche. Questo ranking consente inoltre per inoltrare le chiamate prioritarie ad altri dispositivi.
Il modello di notifica CallStyle
include le seguenti azioni obbligatorie:
- Rispondi o Rifiuta per le chiamate in arrivo.
- Riaggancia per avviare le chiamate.
- Rispondi o Riaggancia per il filtro delle chiamate.
Le azioni in questo stile vengono visualizzate come pulsanti e il sistema aggiunge automaticamente icone e testo appropriati. L'etichettatura manuale dei pulsanti non è supportata. Per ulteriori informazioni sui principi di progettazione delle notifiche, vedi Notifiche.
Le azioni richieste vengono passate come intent, ad esempio hangupIntent
e
answerIntent
nelle sezioni seguenti. Ognuno di questi fa riferimento a un
gestito dal sistema. Il token è un oggetto leggero
possono essere trasferite tra diverse app e processi. Il sistema
responsabile della gestione della durata del token e di garantire che
PendingIntent
è utilizzabile anche se l'app che lo ha creato non è più
in esecuzione. Se dai a un'altra app un PendingIntent
, concedi
l'autorizzazione a eseguire l'operazione specificata, come rifiutare o rispondere.
Questa autorizzazione viene concessa anche se l'app che ha creato l'intent
non è attualmente in esecuzione. Per ulteriori informazioni, consulta la documentazione di riferimento
per PendingIntent
.
A partire da Android 14 (livello API 34), puoi configurare le notifiche di chiamata
non sia ignorabile. A questo scopo, usa le notifiche di CallStyle
con il
Da Notification.FLAG_ONGOING_EVENT
a
Notification.Builder#setOngoing(true)
.
Di seguito sono riportati alcuni esempi dell'utilizzo di vari metodi con l'CallStyle
notifica.
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();
Chiamata in arrivo
Utilizza il metodo forIncomingCall()
per creare una notifica in stile chiamata per un
chiamata in arrivo.
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);
Chiamata in corso
Utilizza il metodo forOngoingCall()
per creare una notifica in stile chiamata per un
chiamata in corso.
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);
Filtrare una chiamata
Utilizza il metodo forScreeningCall()
per creare una notifica in stile chiamata per
filtrando una chiamata.
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);
Garantisci la compatibilità con più versioni di Android
Associa le notifiche CallStyle
sulle versioni API 30 o precedenti a un
servizio in primo piano per assegnare loro il ranking più alto nell'API.
livello 31 o successivi. Inoltre, CallStyle
notifiche sulla versione 30 dell'API
o precedenti possono ottenere un ranking simile contrassegnando la notifica come
con il metodo setColorized()
.
Utilizza le API Telecom con le notifiche CallStyle
. Per ulteriori informazioni, vedi
Panoramica del framework per le telecomunicazioni.