Tworzenie powiadomień o stylu połączeń w aplikacjach do połączeń

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.

Powiadomienia w stylu połączenia z przyciskami oznaczonymi etykietami
Rysunek 1. Szablon stylu połączeń dla połączeń przychodzących i trwających.

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