В Android 12.0 (уровень API 31) и более поздних версиях система предоставляет шаблон уведомления CallStyle
, позволяющий отличать уведомления о вызовах от других типов уведомлений. Используйте этот шаблон для создания уведомлений о входящих или текущих вызовах. Шаблон поддерживает уведомления большого формата, которые включают информацию о вызывающем абоненте и необходимые действия, такие как ответ или отклонение вызовов.
Поскольку входящие и текущие вызовы являются событиями с высоким приоритетом, эти уведомления получают высший приоритет в тени уведомлений. Этот рейтинг также позволяет системе перенаправлять эти приоритетные вызовы на другие устройства.
Шаблон уведомления CallStyle
включает в себя следующие обязательные действия:
- Ответить или отклонить входящие вызовы.
- Повесьте трубку при текущих звонках.
- Ответьте или повесьте трубку для проверки вызова.
Действия в этом стиле отображаются в виде кнопок, при этом система автоматически добавляет соответствующие значки и текст. Ручная маркировка кнопок не поддерживается. Дополнительные сведения о принципах создания уведомлений см. в разделе Уведомления .

Обязательные действия передаются как намерения, например hangupIntent
и answerIntent
в следующих разделах. Каждый из них является ссылкой на токен, поддерживаемый системой. Токен — это легкий объект, который можно передавать между различными приложениями и процессами. Система отвечает за управление временем жизни токена и обеспечение возможности использования PendingIntent
, даже если приложение, создавшее его, больше не работает. Когда вы предоставляете другому приложению PendingIntent
, вы предоставляете ему разрешение на выполнение указанной операции, например отклонение или ответ. Это разрешение предоставляется, даже если приложение, создавшее намерение, в данный момент не запущено. Дополнительные сведения см. в справочной документации по PendingIntent
.
Начиная с Android 14 (уровень API 34), вы можете настроить уведомления о вызовах так, чтобы их нельзя было отклонить. Для этого используйте уведомления CallStyle
с Notification.FLAG_ONGOING_EVENT
через Notification.Builder#setOngoing(true)
.
Ниже приведены примеры использования различных методов с уведомлением CallStyle
.
// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build()
// Create a new call with the user as the caller.
Person incomingCaller = new Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build();
Входящий звонок
Используйте метод forIncomingCall()
, чтобы создать уведомление в стиле вызова для входящего вызова.
// 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)
// 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);
Текущий звонок
Используйте метод forOngoingCall()
, чтобы создать уведомление о стиле вызова для текущего вызова.
// 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)
// 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);
Экран вызова
Используйте метод forScreeningCall()
, чтобы создать уведомление о стиле вызова для проверки вызова.
// 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)
// 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);
Обеспечьте совместимость с другими версиями Android.
Свяжите уведомления CallStyle
в API версии 30 или более ранней со службой переднего плана, чтобы присвоить им высокий ранг, присвоенный им на уровне API 31 или более поздней версии. Кроме того, уведомления CallStyle
в API версии 30 или более ранней могут достичь аналогичного ранжирования, пометив уведомление как раскрашенное с помощью метода setColorized()
.
Используйте API-интерфейсы Telecom с уведомлениями CallStyle
. Дополнительные сведения см. в разделе Обзор платформы телекоммуникаций .