Su Android 12.0 (livello API 31) e versioni successive, il sistema fornisce il modello di notifica
CallStyle per distinguere le notifiche di chiamata da
altri tipi di notifiche. Utilizza questo modello per creare notifiche di chiamate in arrivo o in corso. Il modello supporta le notifiche di grande formato
che includono le informazioni sul chiamante e le azioni richieste, ad esempio rispondere o
rifiutare le chiamate.
Poiché le chiamate in arrivo e in corso sono eventi con priorità elevata, queste notifiche ricevono la massima priorità nell'area notifiche. Questa classificazione consente inoltre al sistema di inoltrare queste chiamate con priorità ad altri dispositivi.
Il modello di notifica CallStyle include le seguenti azioni obbligatorie:
- Rispondi o Rifiuta per le chiamate in arrivo.
- Riaggancia per le chiamate in corso.
- Rispondi o Riaggancia per il filtro 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, consulta la sezione Notifiche.
Le azioni richieste vengono trasmesse come intent, ad esempio hangupIntent e
answerIntent nelle sezioni seguenti. Ciascuno di questi è un riferimento a un token gestito dal sistema. Il token è un oggetto leggero che
può essere passato tra diverse app e processi. Il sistema è
responsabile della gestione della durata del token e garantisce che il
PendingIntent sia utilizzabile anche se l'app che lo ha creato non è più
in esecuzione. Quando concedi a un'altra app un PendingIntent, le concedi l'autorizzazione a eseguire l'operazione specificata, ad esempio rifiutare o rispondere.
Questa autorizzazione viene concessa anche se l'app che ha creato l'intent non è
in esecuzione. Per saperne di più, consulta la documentazione di riferimento per
PendingIntent.
A partire da Android 14 (livello API 34), puoi configurare le notifiche di chiamata
in modo che non possano essere chiuse. Per farlo, utilizza le notifiche CallStyle con
Notification.FLAG_ONGOING_EVENT tramite
Notification.Builder#setOngoing(true).
Di seguito sono riportati alcuni esempi di utilizzo di vari metodi con la notifica CallStyle.
// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build()
Chiamata in arrivo
Utilizza il metodo forIncomingCall() per creare una notifica in stile chiamata per una
chiamata in arrivo.
// 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)
Chiamata in corso
Utilizza il metodo forOngoingCall() per creare una notifica di stile chiamata per una
chiamata in corso.
// 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)
Filtrare una chiamata
Utilizza il metodo forScreeningCall() per creare una notifica in stile chiamata per
filtrare una chiamata.
// 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)
Fornire 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 rango elevato che viene loro assegnato nel livello
API 31 o versioni successive. Inoltre, le notifiche CallStyle sulla versione 30 o precedente dell'API
possono ottenere un ranking simile contrassegnando la notifica come
colorata, utilizzando il metodo setColorized().
Utilizzare le API Telecom con le notifiche CallStyle. Per saperne di più, consulta la
panoramica del framework per le telecomunicazioni.