Il modulo CellBroadcast riduce gli sforzi ripetitivi per gli OEM (che a loro volta riduce la frammentazione nell'ecosistema Android e fornisce coerenza comportamento degli utenti finali) e contribuisce a semplificare i test e i test dell'operatore per i requisiti relativi a CellBroadcast (perché il codice non può modificati dagli OEM). Questo modulo è aggiornabile, il che significa che può ricevere aggiornamenti al di fuori del normale ciclo di rilascio di Android.
Formato del pacchetto
Il modulo CellBroadcast è costituito dal servizio e dall'app seguenti.
Il servizio CellBroadcastService supporta la decodifica SMS di CellBroadcast, geofencing per avvisi di emergenza wireless (WEA) 3.0, controlli della duplicazione dei messaggi, e la trasmissione di messaggi alle app. È una strategia di targeting geografico one-to-many servizio di messaggistica con geofencing progettato per recapitare messaggi a più dispositivi mobili utenti di smartphone in un'area definita. Il servizio è definito il comitato ETSI GSM, 3GPP, e fa parte del standard per le telecomunicazioni.
L'app CellBroadcastReceiver è un'app di sistema predefinita che gestisce avvisi di emergenza e di nessuna emergenza (ad esempio allerte ambra e presidenziali) e presenta le informazioni agli utenti finali in base all'operatore e all'area geografica in materia.
Flusso di messaggi CellBroadcast
La figura seguente mostra il flusso di messaggi CellBroadcast.
Figura 1. Flusso di messaggi di CellBroadcastReceiver
Il Radio Interface Layer (RIL) avvisa
InBoundSMSHandler
di una CDMA/GSM SMS cellBroadcast.Il framework inoltra l'SMS CellBroadcast al modulo CBS per analizzare e per elaborare il messaggio in arrivo.
Dopo l'elaborazione del messaggio, CellBroadcastService inoltra l'intent a l'app CellBroadcastRicevir predefinita di sistema.
L'app CellBroadcastReceiver mostra il messaggio all'utente.
Formato del modulo
L'app CellBroadcastService e l'app CellBroadcastReceiver sono incluse in un
singolo file APEX
(com.android.cellbroadcast
), disponibile per i dispositivi con
Android 11 o versioni successive. Il modulo include il codice
package/app/CellBroadcastReceiver
ed esegue la migrazione delle classi di framework esistenti a
packages/modules/CellBroadcastService
.
Dipendenze del modulo
Il modulo CellBroadcast interagisce con il framework utilizzando solo
@SystemApi
(nessuna API @hide
) e dipende dalle librerie statiche riportate di seguito.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Puoi personalizzare la configurazione utilizzando gli overlay delle risorse di runtime (RRO).
Configurazione autorizzazioni
Il modulo CellBroadcast è firmato con una firma di Google anziché con una piattaforma.
firma, il che significa che il modulo perde l'accesso alle autorizzazioni di firma.
Android 11 definisce invece la nuova firma
autorizzazione com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
all'interno del modulo CellBroadcast; solo i pacchetti del modulo possono ricevere
perché sono firmati con la stessa chiave. Questa autorizzazione consente
L'app CellBroadcastRicevir per avere accesso completo al database all'interno
CellBroadcastService.
La piattaforma concede il runtime android.permission.READ_CELL_BROADCASTS
autorizzazione all'app SMS di sistema predefinita per accedere alla cronologia delle emergenze
avvisi.
Integra il modulo CellBroadcast
Questa sezione descrive come integrare il modulo CellBroadcast.
Integrazione con le impostazioni
Puoi decidere dove integrare le impostazioni di CellBroadcast nell'app Impostazioni
(gli utenti finali accedono alla pagina delle impostazioni di CellBroadcast da Impostazioni >
App e Notifiche > Avanzate > avviso di emergenza). Per avviare
dell'app CellBroadcastReceiver dall'app Impostazioni, modifica quanto segue
l'impostazione delle configurazioni con il nome del pacchetto
com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Integrazione con app di messaggistica
Puoi integrare il link di un'app nelle app di messaggistica per aprire CellBroadcast
cronologia dei messaggi. Nell'app Android Messaging, questa funzionalità è stata integrata
Impostazioni > Avanzate > Avviso di emergenza. Per integrare un link in
la tua app di messaggistica, definisci il percorso nell'app di messaggistica e configura
nome del componente per il modulo CellBroadcast come
com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Integra con la Posta in arrivo SMS
Puoi attivare la visualizzazione dei messaggi CellBroadcast nell'app di messaggistica predefinita eseguendo l'override della configurazione seguente mediante un overlay di risorse di runtime.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Poiché la concessione delle autorizzazioni non rientra nell'ambito del modulo CellBroadcast,
devi concedere l'autorizzazione AppOpsManager.OP_WRITE_SMS
a CellBroadcast
per fornire assistenza end-to-end. Per un'implementazione di riferimento AOSP,
consulta questo SmsApplication.java
o una patch.
Avvia l'app CellBroadcastReceiver
L'app CellBroadcastReceiver ha i seguenti punti di lancio.
Il menu dell'app Impostazioni.
Un'app (incluse le app di terze parti), ad esempio un'app di messaggi con link a Cronologia dei messaggi di CellBroadcast.
(Facoltativo) Un'icona di avvio dalla schermata Home di Android aggiunta dall'OEM. Per maggiori dettagli, vedi Aggiungere un'icona di lancio.
Impostazioni dell'app CellBroadcastReceiver
I seguenti screenshot mostrano il menu delle impostazioni dell'app CellBroadcastReceiver.
Figura 2. Menu delle impostazioni dell'app CellBroadcastReceiver
Figura 3. Schermata Cronologia avvisi di emergenza
Aggiungi icone di avvio
Puoi abilitare l'accesso alla cronologia dei messaggi di CellBroadcast da Avvio applicazioni e tramite le tue icone di lancio.
Per consentire l'accesso alla cronologia dei messaggi da Avvio applicazioni, sostituisci la la configurazione seguente utilizzando un RRO.
<item type="bool" name="show_message_history_in_launcher" />
Per eseguire l'override dell'icona predefinita AOSP, sostituisci la configurazione seguente utilizzando un RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Abilita il codice secret CMAS
Per abilitare il codice segreto CMAS, *#*#CMAS#*#* (*#*#2627#*#* nella
tastierino), un'app Telefono deve rilevare il codice speciale del telefono sotto forma di
*#*#code#*#* e gestire il codice utilizzando il metodo pubblico.
sendDialerSpecialCode
.
Requisito per le informazioni sull'area: canale 50
Il canale 50 è un canale speciale utilizzato dagli operatori per le aree di trasmissione. informazioni (ad eccezione dell'MTN in Sudafrica). Per questo canale, trasmetti messaggi non comportano la visualizzazione di una finestra di dialogo o di una notifica. Trasmetti invece vengono visualizzati nello stato della SIM del menu Impostazioni o nella barra di stato (ad ad esempio la visualizzazione di un codice postale).
L'implementazione di Android CellBroadcastService fornisce supporto per le seguenti API nel servizio cell broadcast per le app Impostazioni e SysUI ottenere le informazioni di Channel 50. Per implementarlo:
Registra la trasmissione
android.telephony.action.AREA_INFO_UPDATED
e sostituiscila il nome del pacchetto destinatarioconfig_area_info_receiver_packages
tramite un RRO.Associa a
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Poiché le app Impostazioni e SysUI non rientrano nell'ambito di CellBroadcast devi implementare le modifiche nell'UI di sistema o nell'app Impostazioni per e fornire assistenza end-to-end. Per un'implementazione di riferimento, consulta le Impostazioni diCellBroadcastService Google Cloud.
Personalizzazione
Non puoi modificare direttamente il codice sorgente del modulo CellBroadcast,
possono utilizzare gli overlay delle risorse di runtime
(RRO) a
abilitare (o disabilitare) parametri
(ad esempio, puoi personalizzare il colore delle notifiche e
dimensioni nelle finestre di dialogo). Per eseguire l'override dei valori predefiniti dei parametri utilizzati in
modulo CellBroadcast, modifica il nome del pacchetto di destinazione in
com.android.cellbroadcastreceiver
. Inoltre:
Per un elenco di configurazioni sovrapponibili,
overlayable.xml
Per un'implementazione di esempio, consulta
RROSampleTestApp
in AOSP.
Se nell'implementazione mancano le risorse di traduzione delle stringhe dell'UI o se
le traduzioni non soddisfano le tue aspettative, puoi sostituire la traduzione
utilizzando un RRO o collabora con il team di traduzione di Google per l'upstream
le traduzioni di stringhe al modulo CellBroadcast. Se sostituisci la traduzione
di risorse, Google deve esporre queste stringhe in overlayable.xml
per consentire
con override. Se hai bisogno di ulteriori configurazioni per la personalizzazione della UI, contatta
il gruppo di assistenza di CellBroadcast.
Esegui migrazione dati
Android 11 include un'app precedente di CellBroadcast, è un meccanismo per conservare ed eseguire la migrazione dei dati dell'app (incluse le impostazioni utente e cronologie degli avvisi di emergenza) per i dispositivi in fase di upgrade al modulo CellBroadcast. Le implementazioni Android che utilizzano il modulo CellBroadcast devono includere il nella versione precedente di CellBroadcast per la migrazione dei dati. Se le tue per l'uso di una soluzione CellBroadcast personalizzata, è necessario definire dell'APK CellBroadcastContentProvider per conservare i dati (puoi rimuovere l'APK cell broadcast precedente in una release successiva).
Sui dispositivi di cui è stato eseguito l'upgrade per utilizzare il modulo CellBroadcast, il modulo recupera i dati
da AOSP LegacyCellBroadcastApp o
L'APK CellBroadcastContentProvider definito dall'OEM tramite il modello ben definito
Autorità cellbroadcast-legacy
.
Utilizza un APK CellBroadcastContentProvider definito dall'OEM
Quando viene definito un APK CellBroadcastContentProvider, l'APK deve rispettare le seguenti specifiche.
L'APK è un APK headless che mostra solo i contenuti del suo database e
SharedPreferences
: tramite unContentProvider
con l'autoritàcellbroadcast-legacy
e non è accessibile alle app di terze parti.L'APK è sviluppato e di proprietà dell'OEM, dove quest'ultimo può continuare a ospitare lo schema API nascosto.
Per eseguire la migrazione di SharedPreferences
al modulo CellBroadcast,
L'APK CellBroadcastContentProvider deve supportare la classe
ContentProvider.call
)
con i seguenti parametri:
- Autorità:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Metodo:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Questo è un elenco di chiavi di preferenza condivise supportate per CellBroadcast in maggior dettaglio più avanti in questo modulo. I dati provengono da
SharedPreferences
perContentProvider.call
.
Per eseguire la migrazione della cronologia dei messaggi al modulo CellBroadcast,
L'APK CellBroadcastContentProvider deve supportare la classe
ContentProvider.query
con i seguenti parametri:
- Autorità:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Colonne delle query elencare le proprietà dei messaggi supportate per il modulo CellBroadcast. Acquisisce i dati (dal tuo database) per il metodoContentProvider.query
.
Per un'implementazione di riferimento per CellBroadcastContentProvider,
consulta
LegacyCellBroadcastContentProvider
.
Test
La suite per il test di compatibilità Android (Android Compatibility Test Suite, CTS) verifica la funzionalità di
le API di sistema che dipendono dall'app. Puoi anche eseguire il modulo CellBroadcast
unit tests/testappsp
Se l'OEM ha attivato il codice segreto CMAS per un dispositivo, dispositivo può supportare la modalità di debug con le seguenti funzionalità.
Gli avvisi di prova sono raggruppati in Altri avvisi con un pulsante di attivazione/disattivazione.
La cronologia include tutti i messaggi ricevuti ma non visualizzati, ad esempio: messaggi duplicati o messaggi in un'altra lingua.
I messaggi mostrano tutti i parametri disponibili, tra cui numero di serie, messaggio ID e data di scadenza.
Per attivare la modalità di debug, componi *#*#CMAS#*#* sulla tastiera.
Contatto
Per ulteriori dettagli o domande sul modulo CellBroadcast, contatta il Gruppo di assistenza di CellBroadcast.