Na Androidzie 12.0 (poziom interfejsu API 31) i nowszych system udostępnia szablon powiadomienia CallStyle
, który pozwala odróżnić powiadomienia o połączeniach od innych typów powiadomień. Użyj tego szablonu do tworzenia przychodzących
i trwających powiadomień o połączeniach. Szablon obsługuje powiadomienia w dużym formacie, które zawierają informacje o rozmówcy i wymagane działania, takie jak odbieranie lub odrzucanie połączeń.
Połączenia przychodzące i trwające mają wysoki priorytet, więc powiadomienia te mają najwyższy priorytet w obszarze powiadomień. Ten ranking umożliwia też systemowi przekazywanie tych priorytetowych połączeń do innych urządzeń.
Szablon powiadomienia CallStyle
zawiera te wymagane działania:
- Odbierz lub Odrzuć w przypadku połączeń przychodzących.
- Rozłącz się w przypadku trwających połączeń.
- Kliknij Odbierz lub Rozłącz się, 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 na temat powiadomień.
W kolejnych sekcjach wymagane działania, takie jak hangupIntent
i answerIntent
, są przekazywane jako intencje. Każdy z nich jest odniesieniem do tokena utrzymywanego przez system. Token to niewielki obiekt, który może być przekazywany między różnymi aplikacjami i procesami. System odpowiada za zarządzanie czasem trwania tokena i zapewnianie użyteczności tokena PendingIntent
nawet wtedy, gdy aplikacja, która go utworzyła, nie jest już uruchomiona. Przyznając innej aplikacji uprawnienie PendingIntent
, przyznajesz jej uprawnienia do wykonania określonej operacji, takiej jak odrzucenie lub udzielenie odpowiedzi.
To uprawnienie jest przyznawane, nawet jeśli aplikacja, która utworzyła intencję, nie jest obecnie uruchomiona. Więcej informacji znajdziesz w dokumentacji referencyjnej PendingIntent
.
Począwszy od Androida 14 (poziom interfejsu API 34) możesz skonfigurować powiadomienia o wywołaniach w taki sposób, aby nie można było ich zamknąć. Aby to zrobić, użyj powiadomień CallStyle
w Notification.FLAG_ONGOING_EVENT
do Notification.Builder#setOngoing(true)
.
Poniżej znajdziesz przykłady korzystania z różnych metod z powiadomieniem CallStlye
.
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
Metoda forIncomingCall()
pozwala utworzyć powiadomienie o stylu połączenia dla połączenia przychodzącego.
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
Aby utworzyć powiadomienie o stylu połączenia dla trwającego połączenia, użyj metody forOngoingCall()
.
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 stylu połączenia na potrzeby filtrowania połączenia, użyj metody forScreeningCall()
.
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);
Zgodność z większą liczbą wersji Androida
Powiąż powiadomienia CallStyle
w interfejsie API w wersji 30 lub starszej z usługą na pierwszym planie, aby przypisać im wysoką pozycję w rankingu API na poziomie 31 lub nowszym. Dodatkowo powiadomienia CallStyle
w interfejsie API w wersji 30 lub starszej mogą osiągnąć podobną pozycję w rankingu, gdy powiadomienie zostanie oznaczone jako kolorowe (za pomocą metody setColorized()
).
Używaj interfejsów Telecom API z powiadomieniami CallStyle
. Więcej informacji znajdziesz w artykule Omówienie platformy telekomunikacyjnej.