CellBroadcast

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

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

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

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

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

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

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

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

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

  2. Платформа перенаправляет SMS CellBroadcast в модуль CBS для анализа и обработки входящего сообщения.

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

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

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

CellBroadcastService и приложение CellBroadcastReceiver включены в один файл APEX ( com.google.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.

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

Интеграция модуля CellBroadcast

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

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

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

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

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

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

Интеграция с почтовым ящиком SMS

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

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

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

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

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

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

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

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

Настройки приложения 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-карты меню «Настройки» или в строке состояния (например, отображая почтовый индекс).

Реализация CellBroadcastService для Android обеспечивает поддержку следующих API-интерфейсов в службе сотового вещания для приложений Settings и SysUI для получения информации о широковещательном канале 50. Чтобы реализовать это, сделайте следующее:

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

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

Поскольку приложения Settings и SysUI выходят за рамки модуля CellBroadcast, вы должны реализовать свои изменения в SystemUI или приложении Settings, чтобы обеспечить комплексную поддержку. Для эталонной реализации обратитесь к приложению CellBroadcastService Settings .

Настройка

Вы не можете напрямую изменить исходный код модуля CellBroadcast, но вы можете использовать наложения ресурсов времени выполнения (RRO) для включения (или отключения) параметров (например, вы можете настроить цвет уведомлений и размеров в диалоговых окнах). Чтобы переопределить значения параметров по умолчанию, используемые в модуле CellBroadcast, измените имя целевого пакета на com.google.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, модуль извлекает данные либо из приложения AOSP LegacyCellBroadcastApp, либо из APK-файла CellBroadcastContentProvider, определенного OEM, через четко определенные cellbroadcast-legacy .

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

При определении APK CellBroadcastContentProvider APK должен соответствовать этим спецификациям.

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

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

Чтобы перенести SharedPreferences в модуль CellBroadcast, APK CellBroadcastContentProvider должен поддерживать метод ContentProvider.call со следующими параметрами:

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

    Это список поддерживаемых общих ключей предпочтений для модуля 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 .

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

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

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

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

Чтобы включить режим отладки, наберите *#*#CMAS#*#* на номеронабирателе.

Контакт

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