CellBroadcast

Модуль CellBroadcast сокращает объем повторяющихся действий для производителей оборудования (что, в свою очередь, уменьшает фрагментацию в экосистеме Android и обеспечивает единообразное поведение для конечных пользователей) и помогает оптимизировать тестирование и сертификацию операторами связи на соответствие требованиям CellBroadcast (поскольку код не может быть изменен производителями оборудования). Этот модуль обновляемый, то есть он может получать обновления функциональности вне обычного цикла выпуска Android.

Формат упаковки

Модуль CellBroadcast состоит из следующих сервисов и приложений.

  • Сервис CellBroadcastService поддерживает декодирование SMS-сообщений CellBroadcast, геозонирование для беспроводного оповещения о чрезвычайных ситуациях (WEA) 3.0, проверку на дублирование сообщений и трансляцию сообщений в приложения. Это сервис обмена сообщениями «один ко многим» с геотаргетингом и геозонированием, предназначенный для одновременной доставки сообщений нескольким пользователям мобильных телефонов в определенной области. Сервис разработан комитетом ETSI GSM, 3GPP и является частью телекоммуникационных стандартов.

  • Приложение CellBroadcastReceiver — это системное приложение по умолчанию, которое обрабатывает экстренные и неэкстренные оповещения (например, «янтарные» и президентские оповещения) и отображает информацию конечным пользователям в соответствии с правилами оператора связи и региональными правилами.

Поток сообщений CellBroadcast

На следующем рисунке показан поток сообщений CellBroadcast.

поток сообщений CellBroadcastReceiver

Рисунок 1. Поток сообщений CellBroadcastReceiver

  1. Уровень радиоинтерфейса (RIL) уведомляет InBoundSMSHandler о SMS-сообщении, передаваемом по сети CDMA/GSM.

  2. Данная система пересылает SMS-сообщение CellBroadcast модулю CBS для анализа и обработки входящего сообщения.

  3. После обработки сообщения CellBroadcastService пересылает намерение в системное приложение CellBroadcastReceiver по умолчанию.

  4. Приложение CellBroadcastReceiver отображает сообщение пользователю.

Формат модуля

Компоненты CellBroadcastService и приложение CellBroadcastReceiver объединены в один APEX- файл ( com.android.cellbroadcast ), доступный для устройств под управлением Android 11 и выше. Модуль включает код из package/app/CellBroadcastReceiver и переносит существующие классы фреймворка в packages/modules/CellBroadcastService .

Зависимости модуля

Модуль CellBroadcast взаимодействует с фреймворком, используя только стабильные аннотации @SystemApi (без @hide API) и зависит от следующих статических библиотек.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

Вы можете настроить конфигурацию с помощью наложений ресурсов среды выполнения (RRO) .

Настройка разрешений

Модуль CellBroadcast подписан подписью Google, а не платформенной подписью, что означает потерю доступа к разрешениям подписи. Вместо этого Android 11 определяет новое разрешение подписи com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY внутри модуля CellBroadcast; только пакеты внутри модуля могут получить это разрешение, поскольку они подписаны одним и тем же ключом. Это разрешение позволяет приложению CellBroadcastReceiver иметь полный доступ к базе данных внутри CellBroadcastService.

Платформа предоставляет системному приложению SMS по умолчанию разрешение android.permission.READ_CELL_BROADCASTS для доступа к истории экстренных сообщений.

Интегрируйте модуль CellBroadcast.

В этом разделе описывается, как интегрировать модуль CellBroadcast.

Интеграция с настройками

Вы можете выбрать, куда интегрировать настройки CellBroadcast, в приложении «Настройки» (пользователи получают доступ к странице настроек CellBroadcast через «Настройки» > «Приложения и уведомления» > «Дополнительно» > «Экстренное оповещение» ). Чтобы запустить приложение CellBroadcastReceiver из приложения «Настройки», измените следующие параметры, указав имя пакета com.android.cellbroadcastreceiver .

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

Интеграция с мессенджерами

В приложения для обмена сообщениями можно интегрировать ссылку на приложение, позволяющую открывать историю сообщений CellBroadcast. В приложении «Сообщения» для Android эта функция интегрирована в «Настройки» > «Дополнительно» > «Экстренное оповещение» . Чтобы интегрировать ссылку в собственное приложение для обмена сообщениями, укажите путь в приложении и настройте имя компонента для модуля CellBroadcast как com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Интеграция с SMS-почтой

Вы можете включить отображение сообщений CellBroadcast в стандартном приложении для обмена сообщениями, переопределив следующую конфигурацию с помощью наложения ресурсов во время выполнения.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Поскольку предоставление разрешений выходит за рамки модуля CellBroadcast, для обеспечения сквозной поддержки необходимо предоставить модулю CellBroadcast разрешение AppOpsManager.OP_WRITE_SMS . Пример реализации на основе AOSP см. в этом патче SmsApplication.java .

Запустите приложение CellBroadcastReceiver

Приложение CellBroadcastReceiver имеет следующие точки запуска.

  • Меню приложения «Настройки».

  • Приложение (включая сторонние приложения), например, приложение для обмена сообщениями, которое подключается к истории сообщений CellBroadcast.

  • (Необязательно) Значок запуска с главного экрана Android, добавленный производителем. Подробнее см. в разделе «Добавление значка запуска» .

Настройки приложения CellBroadcastReceiver

На следующих скриншотах показано меню настроек приложения CellBroadcastReceiver.

меню настроек приложения CellBroadcastReceiver

Рисунок 2. Меню настроек приложения CellBroadcastReceiver.

История оповещений о чрезвычайных ситуациях

Рисунок 3. Экран истории оповещений о чрезвычайных ситуациях.

Добавить значки запуска

Вы можете включить доступ к истории сообщений CellBroadcast через панель запуска приложений, а также с помощью собственных значков запуска.

  • Чтобы разрешить доступ к истории сообщений из панели запуска приложений, переопределите следующую конфигурацию с помощью запроса на изменение (RRO).

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Чтобы переопределить значок AOSP по умолчанию, измените следующую конфигурацию с помощью RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

Активируйте секретный код CMAS

Для активации секретного кода CMAS, *#*#CMAS#*#* ( *#*#2627#*#* на клавиатуре набора номера), приложение для набора номера должно отслеживать специальный код набора номера в формате *#*# code #*#* и обрабатывать его с помощью открытого метода sendDialerSpecialCode .

Требование к информации о регионе: Канал 50

50-й канал — это специальный канал для операторов связи, предназначенный для трансляции информации, связанной с местоположением (за исключением MTN в Южной Африке). Для этого канала транслируемые сообщения не приводят к появлению диалогового окна или уведомления. Вместо этого сообщения отображаются в меню настроек в разделе состояния SIM-карты или в строке состояния (например, отображается почтовый индекс).

Реализация Android CellBroadcastService обеспечивает поддержку следующих API в службе широковещательной передачи данных для приложений «Настройки» и «Системный интерфейс» для получения информации о канале вещания 50. Для реализации выполните следующие действия:

  • Зарегистрируйте широковещательную рассылку android.telephony.action.AREA_INFO_UPDATED и переопределите имя пакета приемника config_area_info_receiver_packages через RRO.

  • Привязаться к CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Поскольку приложения «Настройки» и «Системный интерфейс» находятся вне области действия модуля CellBroadcast, для обеспечения комплексной поддержки необходимо внести изменения в «Системный интерфейс» или приложение «Настройки». Пример реализации см. в приложении «Настройки» службы CellBroadcastService .

Настройка

Вы не можете напрямую изменять исходный код модуля CellBroadcast, но можете использовать наложения ресурсов времени выполнения (RRO) для включения (или отключения) параметров (например, вы можете настроить цвет уведомлений и размеры диалоговых окон). Чтобы переопределить значения по умолчанию параметров, используемых в модуле CellBroadcast, измените имя целевого пакета на com.android.cellbroadcastreceiver . Кроме того:

  • Список доступных для наложения конфигураций см. в файле overlayable.xml .

  • Пример реализации можно найти в RROSampleTestApp в AOSP.

Если в реализации отсутствуют ресурсы для перевода строк пользовательского интерфейса или если переводы не соответствуют вашим ожиданиям, вы можете переопределить ресурсы перевода с помощью RRO или обратиться к команде переводчиков Google, чтобы передать переводы строк в модуль CellBroadcast. Если вы переопределите ресурсы перевода, Google должен будет предоставить доступ к этим строкам в файле overlayable.xml , чтобы разрешить переопределение. Если вам необходимы дополнительные настройки для персонализации пользовательского интерфейса, обратитесь в группу поддержки CellBroadcast .

Перенос данных

Android 11 включает в себя устаревшее приложение CellBroadcast, которое представляет собой механизм для сохранения и переноса данных приложений (включая пользовательские настройки и историю оповещений о чрезвычайных ситуациях) для устройств, переходящих на модуль CellBroadcast. Реализации Android, использующие модуль CellBroadcast, должны включать устаревшее приложение CellBroadcast в свою сборку для переноса данных. Если ваша реализация использует собственное решение CellBroadcast, вам следует определить APK-файл CellBroadcastContentProvider для сохранения данных (вы можете безопасно удалить устаревший APK-файл CellBroadcast в последующем релизе).

На устройствах, обновленных для использования модуля CellBroadcast, модуль получает данные либо из приложения AOSP LegacyCellBroadcastApp, либо из APK-файла CellBroadcastContentProvider, определенного производителем оборудования, через четко определенный центр сертификации cellbroadcast-legacy .

Используйте APK-файл CellBroadcastContentProvider, определенный производителем оборудования.

При определении APK-файла CellBroadcastContentProvider необходимо, чтобы APK-файл соответствовал этим спецификациям.

  • Этот APK-файл представляет собой безголовый APK-файл, который отображает только содержимое своей базы данных и SharedPreferences через объект ContentProvider с правами доступа cellbroadcast-legacy и недоступен для сторонних приложений.

  • APK-файл разрабатывается и принадлежит производителю оборудования (OEM), который может продолжать размещать свою скрытую схему API.

Для переноса SharedPreferences в модуль CellBroadcast APK-файл CellBroadcastContentProvider должен поддерживать метод ContentProvider.call со следующими параметрами:

  • Авторитет: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Метод: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Аргумент: @SystemAPI CellBroadcast.Preference

    Это список поддерживаемых ключей SharedPreferences для модуля CellBroadcast. Данные получены из SharedPreferences для метода ContentProvider.call .

Для переноса истории сообщений в модуль CellBroadcast APK-файл CellBroadcastContentProvider должен поддерживать метод ContentProvider.query со следующими параметрами:

  • Полномочия доступа: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Столбцы запроса содержат список поддерживаемых свойств сообщений для модуля CellBroadcast. Принимает данные (из вашей базы данных) для метода ContentProvider.query .

Пример реализации CellBroadcastContentProvider, см. в LegacyCellBroadcastContentProvider .

Тестирование

Набор тестов на совместимость с Android (CTS) проверяет функциональность системных API, зависящих от приложения. Вы также можете запустить unit tests/testappsp .

Если производитель активировал секретный код CMAS для устройства, это устройство может поддерживать режим отладки со следующими функциями.

  • Тестовые оповещения сгруппированы в разделе «Другие оповещения» и имеют переключатель включения/выключения.

  • История включает все полученные, но не отображенные сообщения, такие как дубликаты сообщений или сообщения на другом языке.

  • В сообщениях отображаются все доступные параметры, включая серийный номер, идентификатор сообщения и срок действия.

Для включения режима отладки наберите *#*#CMAS#*#* на устройстве набора номера.

Контакт

Для получения дополнительной информации или ответов на вопросы о модуле CellBroadcast обратитесь в службу поддержки CellBroadcast .