В Android 11 добавлена поддержка настройки поведения и размещения уведомлений о диалогах в панели уведомлений в зависимости от приоритета и уровня оповещений, что позволяет помечать диалоги как важные и запускать всплывающие окна, относящиеся к конкретным диалогам, в пространстве диалогов.
Основываясь на функциях Android 11, Android 12 предлагает две новые функции для общения:
Функция «Недавние беседы» в настройках позволяет пользователям настраивать поведение уведомлений для недавних бесед без ожидания самого уведомления.
Функция «Виджет чата» позволяет пользователям легко открывать чаты на главном экране, обеспечивая быстрый просмотр последних переписок.
В этом документе описываются аспекты реализации, настройки и проверки уведомлений и виджетов для диалогов.
Обзор уведомлений о диалогах
В Android 11 представлен новый системный примитив — «Разговор», который представлен существующим объектом ярлыка для обмена данными (который был добавлен в Android 9).
Примитив «Разговоры» можно использовать следующим образом:
Для обмена данными о переписке между приложениями в рамках всей системы используйте функцию Sharesheet (уже есть в Android 10).
Для управления пузырьками ( ярлыки в Android 11). См. рисунок 1 .
Чтобы принять участие в новом разделе «Общение» в верхней части панели уведомлений (реализованном в Android 11), см. рисунок 2 .
Для создания виджетов диалогов (реализовано в Android 12).

Рисунок 1: Уведомление, запускаемое в виде всплывающего окна из панели уведомлений.

Рисунок 2: Пространство для общения, расположенное в верхней части панели уведомлений.
Помимо ссылки на ярлык, представляющий собой диалог, уведомление также использует MessagingStyle для включения последнего сообщения диалога в пространство «Диалог».
Партнеры GMS обязаны внедрить следующие меры:
- Новое пространство для бесед, расположенное в отдельном разделе над панелью уведомлений.
- Стиль уведомлений, который позволяет и поддерживает специфический для диалога шаблон всплывающих окон.
Партнеры, внедряющие диалоги, обязаны также внедрить важные диалоги. Однако внедрение диалогов может быть согласовано с аналогичными концепциями OEM-производителей. В целом, партнеры имеют свободу в согласовании раздела диалогов со своим конкретным системным пользовательским интерфейсом. Партнеру не нужно модифицировать или внедрять HAL/драйверы/код ядра/расширения.
См. следующую эталонную реализацию в разделах SystemUI и PeopleService в AOSP:
frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/
Валидация
Чтобы убедиться, что ваша версия функции работает должным образом, проверьте следующее:
Приложения, полностью поддерживающие Conversation API, видят свои уведомления в новом разделе и могут настраивать эти уведомления в зависимости от диалога, а не от общего канала уведомлений (NotificationChannel) .
Отдельные диалоговые окна работают.
Для проверки реализации используйте следующие тесты из пакета уведомлений:
Тесты CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.javaТесты CTS Verifier.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Обзор виджетов для диалогов
В Android 12 функция «Виджеты диалогов» основана на представлениях диалогов, созданных в Android 11 (как описано в предыдущем разделе), и позволяет приложениям предоставлять информацию о статусе тех диалогов, которые отображаются в виджетах диалогов.

Рисунок 3: Диалоги, отображаемые в виджетах диалогов.
Функция виджетов для общения в Android 12 способствует поддержанию связи, позволяя пользователям легко открывать чаты на главном экране. Виджеты представляют собой улучшенные ярлыки, которые позволяют пользователям быстро возвращаться к своим беседам, отображая при этом краткие обзоры статуса разговора.
Партнер должен выполнить следующие действия:
- Виджет, предоставляемый SystemUI.
- Схема добавления этих виджетов с экрана выбора виджетов.
- Поддерживается изменение размера виджетов следующим образом:
- Используйте
onAppWidgetOptionsChanged(), чтобы изменить размер макета на более подходящий, когда пользователь изменяет размер макета или поворачивает его в альбомную ориентацию. - Используйте
maxResizeHeight,maxResizeWidth,minWidth,minHeight,minResizeWidth,minResizeHeightдля корректного ограничения изменений размера виджета.
- Используйте
При внедрении виджетов для диалогов следует учитывать следующие зависимости:
- Партнеру не нужно модифицировать или внедрять код HAL/драйвера/ядра.
- Для реализации используется API статуса, который позволяет приложениям добавлять информацию о статусе или доступности в диалог и связанный с ним виджет.
- Процесс одинаков как при внедрении новых устройств, так и при модернизации существующих.
- Функция «Виджеты диалогов» зависит от новой функции, которая появится в Android 12 и будет кэшировать недавно просмотренные диалоги (например, из уведомлений). Эта функция позволяет расширить список диалогов, которые пользователь потенциально может добавить на главный экран.
См. следующую эталонную реализацию в файлах SystemUI и Launcher3:
frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/
Настройка
Функцию «Виджеты для общения» нельзя включить или выключить. Однако партнер может изменять макеты шаблонов виджетов, если соблюдены требования GMS.
Валидация
Чтобы убедиться, что ваша версия функции работает должным образом, проверьте следующее:
При длительном нажатии на кнопку «Лаунчер» можно добавить новый виджет диалога в панель выбора виджетов. См. рисунок 4, где показан интерфейс выбора виджетов:

Рисунок 4: Интерфейс выбора виджета для добавления нового виджета диалога.
При отправке уведомлений на устройство из выбранного диалога виджет обновляется, отображая эти уведомления.
При применении статусов к этой беседе с помощью API
ConversationStatus, виджет отображает эти статусы.Пользователи могут изменять размер виджетов, и виджеты могут менять свой размер в зависимости от текущего лаунчера. Макеты ваших виджетов должны хорошо работать с разными размерами лаунчеров на разных устройствах и при изменении размера виджета.
Для проверки реализации используйте следующие тесты из пакета уведомлений:
Тесты CTS (PeopleManagerTest) для поверхностей API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.javaРучное тестирование требований GMS — Диалоги.