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

Na Androidzie 12.0 (interfejs API na poziomie 31) i nowszych wersjach system udostępnia szablon powiadomienia CallStyle, aby odróżnić powiadomienia o połączeniach od innych typów powiadomień. Użyj tego szablonu, aby tworzyć powiadomienia o połączeniach przychodzących lub trwających. Szablon obsługuje powiadomienia w dużym formacie, które zawierają informacje o dzwoniącym i wymagane działania, takie jak odbieranie lub odrzucanie połączeń.

Połączenia przychodzące i trwające są wydarzeniami o wysokim priorytecie, dlatego te powiadomienia mają najwyższy priorytet w obszarze powiadomień. Ten ranking umożliwia też systemowi przekazywanie tych połączeń o wyższym priorytecie na inne urządzenia.

Szablon powiadomienia CallStyle zawiera te wymagane działania:

  • Odbierz lub Odrzuć połączenie przychodzące.
  • Rozłącz w przypadku trwających połączeń.
  • Odbierz lub Rozłącz się, aby skorzystać z funkcji filtrowania połączeń.

Działania w tym stylu są wyświetlane jako przyciski, a system automatycznie dodaje odpowiednie ikony i tekst. Ręczne oznaczanie przycisków etykietami nie jest obsługiwane. Więcej informacji o zasadach projektowania powiadomień znajdziesz w artykule Powiadomienia.

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

Wymagane działania są przekazywane jako intencje, np. hangupIntentanswerIntent w sekcjach poniżej. Każdy z nich jest odwołaniem do tokena przechowywanego przez system. Token to lekki obiekt, który można przekazywać między różnymi aplikacjami i procesami. System jest odpowiedzialny za zarządzanie okresem ważności tokena i zapewnienie, że PendingIntent jest użyteczny nawet wtedy, gdy aplikacja, która go utworzyła, nie jest już uruchomiona. Gdy przyznasz innej aplikacji PendingIntent, zezwalasz jej na wykonanie określonej operacji, np. odrzucenie lub odebranie połączenia. To uprawnienie jest przyznawane nawet wtedy, gdy aplikacja, która utworzyła intencję, nie jest uruchomiona. Więcej informacji znajdziesz w dokumentacji referencyjnej dotyczącej PendingIntent.

Od Androida 14 (interfejs API na poziomie 34) możesz skonfigurować powiadomienia o połączeniach tak, aby nie można było ich odrzucić. Aby to zrobić, użyj powiadomień CallStyle z zakresem Notification.FLAG_ONGOING_EVENTNotification.Builder#setOngoing(true).

Poniżej znajdziesz przykłady użycia różnych metod z powiadomieniem CallStyle.

  // Create a new call, setting the user as the caller.
  val incomingCaller = Person.Builder()
      .setName("Jane Doe")
      .setImportant(true)
      .build()

Połączenie przychodzące

Użyj metody forIncomingCall(), aby utworzyć powiadomienie w stylu połączenia dla połączenia przychodzącego.

  // 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)

Trwa rozmowa

Użyj metody forOngoingCall(), aby utworzyć powiadomienie w stylu połączenia dla trwającego połączenia.

  // 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)

Filtrowanie połączeń

Użyj metody forScreeningCall(), aby utworzyć powiadomienie w stylu połączenia do sprawdzania połączeń.

  // 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)

Zapewnianie zgodności z większą liczbą wersji Androida

Powiąż powiadomienia CallStyle w wersjach interfejsu API 30 lub starszych z usługą na pierwszym planie, aby przypisać im wysoką rangę, jaką mają w interfejsie API na poziomie 31 lub nowszym. Dodatkowo CallStyle powiadomienia w interfejsie API w wersji 30 lub starszej mogą uzyskać podobną pozycję, oznaczając powiadomienie jako kolorowe za pomocą metody setColorized().

Korzystaj z interfejsów API telekomunikacyjnych z CallStyle powiadomieniami. Więcej informacji znajdziesz w omówieniu struktury telekomunikacyjnej.