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ą.