O módulo CellBroadcast reduz o trabalho repetitivo para OEMs (que por sua vez reduz a fragmentação em todo o ecossistema Android e oferece comportamento aos usuários finais) e ajuda a simplificar os testes e as certificação para requisitos relacionados a CellBroadcast (porque o código não pode ser modificados por OEMs). Este módulo é atualizável, ou seja, ele pode receber atualizações para fora do ciclo normal de lançamento do Android.
Formato do pacote
O módulo CellBroadcast consiste no serviço e no app a seguir.
O serviço CellBroadcastService suporta a decodificação de SMS do CellBroadcast, fronteira geográfica virtual para o alerta de emergência sem fio (WEA, na sigla em inglês) 3.0; verificações de duplicação de mensagens; e transmitindo mensagens para apps. É uma segmentação geográfica de um para muitos, e serviço de mensagens por fronteira geográfica virtual projetado para entregar mensagens a vários dispositivos usuários de celular em uma área definida, ao mesmo tempo. O serviço é definido pela o comitê GSM ETSI 3GPP e faz parte do padrões de telecomunicações.
O app CellBroadcastReceiver é um app padrão do sistema que processa alertas de emergência e não urgentes (como alertas âmbar e presidenciais) e apresenta as informações aos usuários finais com base na operadora e na região regulamentações.
Fluxo de mensagens do CellBroadcast
A figura a seguir mostra o fluxo de mensagens do CellBroadcast.
Figura 1. Fluxo de mensagens de CellBroadcastReceiver
A camada de interface de rádio (RIL) notifica
InBoundSMSHandler
sobre uma conexão SMS do CellBroadcast.A estrutura encaminha o CellBroadcast SMS ao módulo da CBS para analisar e processar a mensagem recebida.
Após o processamento da mensagem, o CellBroadcastService encaminha a intenção para o app CellBroadcastReceiver padrão do sistema.
O app CellBroadcastReceiver exibe a mensagem para o usuário.
Formato do módulo
O CellBroadcastService e o aplicativo CellBroadcastReceiver estão incluídos em um
único arquivo APEX
(com.android.cellbroadcast
), disponível para dispositivos que executam
Android 11 ou versão mais recente O módulo inclui código
package/app/CellBroadcastReceiver
e migra as classes de framework atuais para
packages/modules/CellBroadcastService
.
Dependências do módulo
O módulo CellBroadcast interage com o framework usando apenas objetos
@SystemApi
(sem APIs @hide
) e depende das bibliotecas estáticas a seguir.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
É possível personalizar a configuração usando sobreposições de recursos no ambiente de execução (RROs, na sigla em inglês).
Configuração da permissão
O módulo CellBroadcast é assinado com uma assinatura do Google em vez de uma plataforma
assinatura, o que significa que o módulo perde o acesso às permissões de assinatura.
Em vez disso, o Android 11 define a nova assinatura
permissão com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
dentro do módulo CellBroadcast. somente os pacotes no módulo podem obter o
porque são assinados com a mesma chave. Com essa permissão,
App CellBroadcastReceiver para ter acesso total ao banco de dados dentro
CellBroadcastService.
A plataforma concede ao ambiente de execução android.permission.READ_CELL_BROADCASTS
permissão ao app padrão de SMS do sistema para acessar o histórico de emergência
e alertas.
Integrar o módulo CellBroadcast
Esta seção descreve como integrar o módulo CellBroadcast.
Integrar com configurações
Você pode decidir onde integrar as configurações do CellBroadcast no app Configurações
Os usuários finais acessam a página de configurações do CellBroadcast em Configurações >
Aplicativos e Notificações > Avançado > Alerta de emergência (em inglês). Para iniciar
no app CellBroadcastReceiver no app Configurações, altere o seguinte
definir configurações com o nome do pacote
com.android.cellbroadcastreceiver
:
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Integrar com apps de mensagens
Você pode integrar um link de app a apps de mensagens para abrir o CellBroadcast
histórico de mensagens. No aplicativo de mensagens do Android, isso foi integrado ao
Configurações > Avançado > Alerta de emergência. Para integrar um link
seu próprio aplicativo de mensagens, definir o caminho no aplicativo de mensagens e configurar o
para o módulo CellBroadcast como
com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
:
Integrar com caixa de entrada de SMS
Você pode ativar a exibição de mensagens do CellBroadcast no app de mensagens padrão substituindo a configuração a seguir usando uma sobreposição de recursos no ambiente de execução.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Como a concessão de permissões está fora do escopo do módulo CellBroadcast,
você precisa conceder a permissão AppOpsManager.OP_WRITE_SMS
à rede CellBroadcast
módulo para oferecer suporte completo. Para uma implementação de referência do AOSP,
consulte este SmsApplication.java
patch.
Iniciar o app CellBroadcastReceiver
O app CellBroadcastReceiver tem os seguintes pontos de inicialização.
Menu do app Configurações.
Um app (incluindo apps de terceiros), como um app de mensagens com links para Histórico de mensagens do CellBroadcast.
(Opcional) Um ícone de inicialização da tela inicial do Android adicionado pelo OEM. Para ver mais detalhes, consulte Como adicionar um ícone de inicialização.
Configurações do app CellBroadcastReceiver
As capturas de tela abaixo mostram o menu de configurações do app CellBroadcastReceiver.
Figura 2. Menu de configurações do app CellBroadcastReceiver
Figura 3. Tela de histórico do alerta de emergência
Adicionar ícones de inicialização
Você pode ativar o acesso ao histórico de mensagens do CellBroadcast no Acesso rápido aos apps e pelos próprios ícones de inicialização.
Para ativar o acesso ao histórico de mensagens pelo Acesso rápido aos apps, substitua a opção configuração a seguir usando uma RRO.
<item type="bool" name="show_message_history_in_launcher" />
Para substituir o ícone padrão do AOSP, modifique a seguinte configuração usando uma RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Ativar o código secreto CMAS
Para ativar o código secreto CMAS, *#*#CMAS#*#* (*#*#2627#*#* no
de discagem), o aplicativo discador deve ouvir o código do discador especial na forma de
*#*#code#*#* e processar o código usando o método público
sendDialerSpecialCode
Requisito de informações da área: canal 50
O canal 50 é um canal especial para as operadoras transmitirem informações (exceto para MTN na África do Sul). Para este canal, transmitir não resultem em uma caixa de diálogo ou notificação. Em vez disso, transmita as mensagens aparecem no status do chip no menu Configurações ou na barra de status (por exemplo, exemplo, exibir um CEP).
A implementação CellBroadcastService do Android fornece suporte para o seguintes APIs no serviço de transmissão celular para os aplicativos Configurações e SysUI para obtenha as informações de transmissão do canal 50. Para implementar isso, faça o seguinte:
Registrar a transmissão
android.telephony.action.AREA_INFO_UPDATED
e substituir o nome do pacote receptorconfig_area_info_receiver_packages
usando uma RRO.Vincular a
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Como os apps Configurações e SysUI estão fora do escopo da transmissão implemente as alterações na SystemUI ou no app Configurações para suporte de ponta a ponta. Para uma implementação de referência, consulte a Configurações do CellBroadcastService app.
Personalização
Não é possível modificar diretamente o código-fonte do módulo CellBroadcast, mas você pode
pode usar sobreposições de recursos no ambiente de execução
(RROs) para
ativar (ou desativar) parâmetros
(por exemplo, você pode personalizar a cor das notificações e
dimensões em caixas de diálogo). Para substituir os valores padrão dos parâmetros usados na
módulo CellBroadcast, mude o nome do pacote de destino para
com.android.cellbroadcastreceiver
: Além disso:
Para uma lista de configurações de sobreposição, consulte
overlayable.xml
Para conferir um exemplo de implementação, consulte
RROSampleTestApp
no AOSP.
Se a implementação não tiver recursos de tradução de strings da interface ou se
as traduções não atenderem às suas expectativas, poderá substituir
recursos usando uma RRO ou trabalhe com a equipe de tradução do Google para
traduções de strings para o módulo CellBroadcast. Se você substituir a tradução
recursos, o Google precisa expor essas strings em overlayable.xml
para permitir
a substituição. Se você precisar de mais configurações para personalização da interface, entre em contato com
grupo de suporte CellBroadcast.
Migrar dados
O Android 11 inclui um app CellBroadcast legado, que é um mecanismo para preservar e migrar dados de apps (incluindo configurações de usuários e históricos de alerta de emergência) para os dispositivos que estão fazendo upgrade para o módulo CellBroadcast. As implementações do Android que usam o módulo CellBroadcast precisam incluir o app CellBroadcast legado no build para migração de dados. Se as implementação usar uma solução CellBroadcast personalizada, você deverá definir um APK CellBroadcastContentProvider para preservar os dados. Você pode remover o APK de transmissão celular legado em uma versão subsequente).
Nos dispositivos atualizados para usar o módulo CellBroadcast, o módulo busca dados
da API LegacyCellBroadcastApp do AOSP
O APK CellBroadcastContentProvider definido pelo OEM por meio do APK bem definido
cellbroadcast-legacy
autoridade.
Usar um APK CellBroadcastContentProvider definido pelo OEM
Ao definir um APK CellBroadcastContentProvider, o APK precisa seguir estas especificações.
O APK é headless que exibe apenas o conteúdo do próprio banco de dados. e
SharedPreferences
por meio de umContentProvider
objeto com a autoridadecellbroadcast-legacy
e não pode ser acessado a aplicativos de terceiros.O APK é desenvolvido e de propriedade do OEM, que pode continuar a hospedar o esquema de API oculto.
Para migrar SharedPreferences
para o módulo CellBroadcast, o
O APK CellBroadcastContentProvider precisa oferecer suporte ao
ContentProvider.call
).
com os seguintes parâmetros:
- Autoridade:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Método:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg.:
@SystemAPI CellBroadcast.Preference
Esta é uma lista de chaves de preferências compartilhadas compatíveis com o protocolo CellBroadcast mais tarde neste módulo. Os dados vêm de
SharedPreferences
para oContentProvider.call
.
Para migrar o histórico de mensagens para o módulo CellBroadcast, o
O APK CellBroadcastContentProvider precisa oferecer suporte ao
ContentProvider.query
com os seguintes parâmetros:
- Autoridade:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Colunas de consulta lista as propriedades de mensagem compatíveis com o módulo CellBroadcast. Recebe dados (do banco de dados) para o métodoContentProvider.query
.
Para uma implementação de referência para CellBroadcastContentProvider,
, consulte
LegacyCellBroadcastContentProvider
.
Teste
O Teste de Compatibilidade do Android (CTS, na sigla em inglês) verifica a funcionalidade de
APIs do sistema dependentes de apps. Você também pode executar o módulo CellBroadcast
unit tests/testappsp
Se o OEM ativou o código secreto CMAS para um dispositivo, dispositivo pode suportar o modo de depuração com os seguintes recursos.
Os alertas de teste são agrupados em Outros alertas com um botão de ativação/desativação.
O histórico inclui todas as mensagens que foram recebidas, mas não exibidas, como mensagens duplicadas ou mensagens em outro idioma.
As mensagens exibem todos os parâmetros disponíveis, incluindo o número de série, a mensagem e a data de validade.
Para ativar o modo de depuração, digite *#*#CMAS#*#* no discador.
Contato
Para mais detalhes ou perguntas sobre o módulo CellBroadcast, entre em contato com o Grupo de suporte do CellBroadcast.