W Androidzie 12.0 (poziom interfejsu API 31) i nowszych system udostępnia
szablon powiadomień CallStyle
do odróżniania powiadomień o połączeniach od
inne typy powiadomień. Użyj tego szablonu do tworzenia przychodzących lub
powiadomienia o trwających połączeniach. Szablon obsługuje powiadomienia w dużym formacie
zawierające informacje o rozmówcy i wymagane działania, takie jak odebranie lub
odrzucanie połączeń
Powiadomienia przychodzące i trwające są zdarzenia o wysokim priorytecie, mają najwyższy priorytet w obszarze powiadomień. Umożliwia to również system do przekierowywania połączeń priorytetowych na inne urządzenia.
Szablon powiadomień CallStyle
zawiera te wymagane działania:
- Odbierz lub Odrzuć w przypadku połączeń przychodzących.
- Rozłącz trwające połączenia.
- Odbierz lub Rozłącz, aby filtrować połączenia.
Działania w tym stylu są wyświetlane jako przyciski, a system automatycznie dodaje odpowiednie ikony i tekst. Ręczne oznaczanie przycisków nie jest obsługiwane. Więcej informacji o zasadach projektowania powiadomień znajdziesz w artykule Powiadomienia.
Wymagane działania są przekazywane jako intencje, na przykład hangupIntent
,
answerIntent
. Każda z nich jest odwołaniem do
token obsługiwany przez system. Token to nieskomplikowany obiekt,
mogą być przesyłane między różnymi aplikacjami i procesami. System jest
odpowiada za zarządzanie cyklem życia tokena i zapewnienie,
Aplikacja PendingIntent
jest przydatna, nawet jeśli aplikacja, która ją utworzyła, nie jest już dostępna
w domu. Gdy przyznasz innej aplikacji PendingIntent
, przyznasz jej dostęp
Pozwolenie na wykonanie określonej operacji, np. odrzucenie lub odpowiedź.
To uprawnienie jest przyznawane nawet wtedy, gdy aplikacja, która utworzyła intencję
nie jest obecnie uruchomiony. Więcej informacji znajdziesz w dokumentacji referencyjnej
dla PendingIntent
.
Począwszy od Androida 14 (poziom interfejsu API 34) możesz konfigurować powiadomienia o połączeniach
tak aby nie można było ich zamknąć. Aby to zrobić, użyj powiadomień z aplikacji CallStyle
i
Notification.FLAG_ONGOING_EVENT
do
Notification.Builder#setOngoing(true)
Poniżej znajdziesz przykłady użycia różnych metod z atrybutem CallStyle
powiadomienia.
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();
Połączenie przychodzące
Użyj metody forIncomingCall()
, aby utworzyć powiadomienie o stylu połączenia dla
połączenie przychodzące.
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);
Trwa rozmowa
Użyj metody forOngoingCall()
, aby utworzyć powiadomienie o stylu połączenia dla
trwającego połączenia.
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);
Filtrowanie połączenia
Aby utworzyć powiadomienie o stylu połączenia dla: forScreeningCall()
filtrowanie połączenia.
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);
Zapewnianie zgodności z większą liczbą wersji Androida
Powiąż powiadomienia CallStyle
w interfejsie API w wersji 30 lub starszej z tagiem
usługi na pierwszym planie, aby przypisać im wysoką pozycję w interfejsie API.
na poziomie 31 lub nowszym. Dodatkowo powiadomienia CallStyle
dotyczące interfejsu API w wersji 30
lub wcześniej mogą uzyskać podobną pozycję w rankingu, oznaczając powiadomienie jako
jest kolorowana za pomocą metody setColorized()
.
Używaj interfejsów Telecom API do obsługi powiadomień CallStyle
. Więcej informacji:
Omówienie zagadnień związanych z telekomunikacją.