Il modulo CellBroadcast riduce gli sforzi ripetitivi per gli OEM (il che a sua volta riduce la frammentazione nell'ecosistema Android e fornisce un comportamento coerente agli utenti finali) e contribuisce a semplificare i test e la certificazione dell'operatore per i requisiti relativi a CellBroadcast (perché il codice non può essere modificato dagli OEM). Questo modulo è aggiornabile, il che significa che può ricevere aggiornamenti delle funzionalità al di fuori del normale ciclo di rilascio di Android.
Formato del pacchetto
Il modulo CellBroadcast è costituito dal seguente servizio e dalla seguente app.
Il servizio CellBroadcastService supporta la decodifica degli SMS CellBroadcast, il geofencing per gli avvisi di emergenza wireless (WEA) 3.0, i controlli di duplicazione dei messaggi e la trasmissione di messaggi alle app. È un servizio di messaggistica con targeting geografico e geofencing da uno a molti progettato per inviare messaggi a più utenti di telefoni cellulari, in un'area definita, contemporaneamente. Il servizio è definito da il comitato ETSI GSM, 3GPP, e fa parte degli standard di telecomunicazione.
L'app CellBroadcastReceiver è un'app di sistema predefinita che gestisce gli avvisi di emergenza e non di emergenza (come gli avvisi ambra e presidenziali) e presenta le informazioni agli utenti finali in base alle normative regionali e dell'operatore.
Flusso di messaggi CellBroadcast
La figura seguente mostra il flusso di messaggi CellBroadcast.
Figura 1. Flusso di messaggi CellBroadcastReceiver
Il livello dell'interfaccia radio (RIL) invia una notifica a
InBoundSMSHandlerin merito a un SMS CellBroadcast CDMA/GSM.Il framework inoltra l'SMS CellBroadcast al modulo CBS per analizzare ed elaborare il messaggio in arrivo.
Dopo l'elaborazione del messaggio, CellBroadcastService inoltra l'intent all'app CellBroadcastReceiver predefinita del sistema.
L'app CellBroadcastReceiver mostra il messaggio all'utente.
Formato del modulo
CellBroadcastService e l'app CellBroadcastReceiver sono inclusi in un
singolo file APEX
(com.android.cellbroadcast), disponibile per i dispositivi con
Android 11 o versioni successive. Il modulo include il codice in package/app/CellBroadcastReceiver ed esegue la migrazione delle classi del framework esistenti a packages/modules/CellBroadcastService.
Dipendenze del modulo
Il modulo CellBroadcast interagisce con il framework utilizzando solo @SystemApi stabile (nessuna API @hide) e dipende dalle seguenti librerie statiche.
Androidx.legacy_legacy-support-v13Androidx.recyclerview_recyclerviewAndroidx.preference_preferenceandroidx.legacy_legacy-preference-v14androidx.appcompat_appcompat
Puoi personalizzare la configurazione utilizzando le sovrapposizioni delle risorse di runtime (RRO).
Configurazione delle autorizzazioni
Il modulo CellBroadcast è firmato con una firma Google anziché con una firma della piattaforma, il che significa che il modulo perde l'accesso alle autorizzazioni di firma.
Android 11 definisce invece la nuova autorizzazione di firma com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY all'interno del modulo CellBroadcast; solo i pacchetti nel modulo possono ottenere l'autorizzazione perché sono firmati con la stessa chiave. Questa autorizzazione consente all'app CellBroadcastReceiver di avere accesso completo al database all'interno di CellBroadcastService.
La piattaforma concede l'autorizzazione di runtime android.permission.READ_CELL_BROADCASTS all'app per SMS di sistema predefinita per accedere alla cronologia degli avvisi di emergenza.
Integra il modulo CellBroadcast
Questa sezione descrive come integrare il modulo CellBroadcast.
Esegui l'integrazione con 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 l'app CellBroadcastReceiver dall'app Impostazioni, modifica le seguenti configurazioni delle impostazioni 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>
Esegui l'integrazione con le app di messaggistica
Puoi integrare un link all'app nelle app di messaggistica per aprire la cronologia dei messaggi CellBroadcast. Nell'app Messaggi di Android, questa funzionalità è stata integrata in Impostazioni > Avanzate > Avviso di emergenza. Per integrare un link nella tua app di messaggistica, definisci il percorso nell'app di messaggistica e configura il nome del componente per il modulo CellBroadcast come com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity.
Esegui l'integrazione con la Posta in arrivo SMS
Puoi attivare la visualizzazione dei messaggi CellBroadcast nell'app di messaggistica predefinita eseguendo l'override della seguente configurazione utilizzando un runtime resource overlay.
<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 al modulo CellBroadcast per fornire il supporto end-to-end. Per un'implementazione di riferimento AOSP,
consulta questa SmsApplication.java
patch.
Avvia l'app CellBroadcastReceiver
L'app CellBroadcastReceiver ha i seguenti punti di avvio.
Il menu dell'app Impostazioni.
Un'app (incluse le app di terze parti) come un'app di messaggi che rimanda alla cronologia dei messaggi CellBroadcast.
(Facoltativo) Un'icona di avvio dalla schermata Home di Android aggiunta dall'OEM. Per maggiori dettagli, vedi Aggiungere un'icona di avvio.
Impostazioni dell'app CellBroadcastReceiver
Gli screenshot seguenti mostrano il menu delle impostazioni dell'app CellBroadcastReceiver.
Figura 2. Menu delle impostazioni dell'app CellBroadcastReceiver
Figura 3. Schermata della cronologia degli avvisi di emergenza
Aggiungi icone di avvio
Puoi attivare l'accesso alla cronologia dei messaggi CellBroadcast da Avvio app e tramite le tue icone di avvio.
Per attivare l'accesso alla cronologia dei messaggi da Avvio app, esegui l'override della seguente configurazione utilizzando un RRO.
<item type="bool" name="show_message_history_in_launcher" />Per eseguire l'override dell'icona predefinita AOSP, esegui l'override della seguente configurazione utilizzando un RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Attiva il codice segreto CMAS
Per attivare il codice segreto CMAS, *#*#CMAS#*#* (*#*#2627#*#* sul
tastierino numerico), un'app di composizione deve rimanere in ascolto del codice di composizione speciale nel formato
*#*#code#*#* e gestire il codice utilizzando il metodo pubblico
sendDialerSpecialCode.
Requisito per le informazioni sull'area: canale 50
Il canale 50 è un canale speciale per gli operatori per trasmettere informazioni relative all'area (ad eccezione di MTN in Sudafrica). Per questo canale, i messaggi di trasmissione non generano una finestra di dialogo o una notifica. I messaggi di trasmissione vengono invece visualizzati nello stato della SIM del menu Impostazioni o nella barra di stato (ad esempio, mostrando un codice postale).
L'implementazione di Android CellBroadcastService fornisce il supporto per le seguenti API nel servizio di cell broadcast per le app Impostazioni e SysUI per ottenere le informazioni sul canale di trasmissione 50. Per implementare questa funzionalità:
Registra la trasmissione
android.telephony.action.AREA_INFO_UPDATEDed esegui l'override del nome del pacchetto del ricevitoreconfig_area_info_receiver_packagestramite un RRO.Esegui l'associazione a
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.
Poiché le app Impostazioni e SysUI non rientrano nell'ambito del modulo CellBroadcast, devi implementare le modifiche in SystemUI o nell'app Impostazioni per fornire il supporto end-to-end. Per un'implementazione di riferimento, consulta l' app Impostazioni di CellBroadcastService.
Personalizzazione
Non puoi modificare direttamente il codice sorgente del modulo CellBroadcast, ma puoi utilizzare le sovrapposizioni delle risorse di runtime (RRO) per attivare (o disattivare) i parametri (ad esempio, puoi personalizzare il colore delle notifiche e le dimensioni delle finestre di dialogo). Per eseguire l'override dei valori predefiniti dei parametri utilizzati nel modulo CellBroadcast, modifica il nome del pacchetto di destinazione in com.android.cellbroadcastreceiver. Inoltre:
Per un elenco delle configurazioni sovrapponibili, consulta
overlayable.xml.Per un esempio di implementazione, consulta
RROSampleTestAppin AOSP.
Se l'implementazione non include le risorse di traduzione delle stringhe dell'interfaccia utente o se le traduzioni non soddisfano le tue aspettative, puoi eseguire l'override delle risorse di traduzione utilizzando un RRO o collaborare con il team di traduzione di Google per eseguire l'upstream delle traduzioni delle stringhe nel modulo CellBroadcast. Se esegui l'override delle risorse di traduzione, Google deve esporre queste stringhe in overlayable.xml per consentire l'override. Se hai bisogno di altre configurazioni per la personalizzazione dell'interfaccia utente, contatta
il gruppo di assistenza CellBroadcast.
Migrazione dei dati
Android 11 include un'app CellBroadcast legacy, un meccanismo per conservare ed eseguire la migrazione dei dati delle app (incluse le impostazioni utente e le cronologie degli avvisi di emergenza) per i dispositivi che eseguono l'upgrade al modulo CellBroadcast. Le implementazioni di Android che utilizzano il modulo CellBroadcast devono includere l'app CellBroadcast legacy nella build per la migrazione dei dati. Se la tua implementazione utilizza una soluzione Cell Broadcast personalizzata, devi definire un APK CellBroadcastContentProvider per conservare i dati (puoi rimuovere in sicurezza l'APK Cell Broadcast legacy in una release successiva).
Sui dispositivi di cui è stato eseguito l'upgrade per utilizzare il modulo CellBroadcast, il modulo recupera i dati dall'APK AOSP LegacyCellBroadcastApp o dall'APK CellBroadcastContentProvider definito dall'OEM tramite l'autorità cellbroadcast-legacy ben definita.
Utilizza un APK CellBroadcastContentProvider definito dall'OEM
Quando definisci un APK CellBroadcastContentProvider, l'APK deve seguire queste specifiche.
L'APK è un APK headless che mostra solo i contenuti del suo database e
SharedPreferencestramite unContentProvideroggetto con l'autoritàcellbroadcast-legacye non è accessibile alle app di terze parti.L'APK è sviluppato e di proprietà dell'OEM, che può continuare a ospitare il proprio schema API nascosto.
Per eseguire la migrazione di SharedPreferences al modulo CellBroadcast, l'
APK CellBroadcastContentProvider deve supportare il
ContentProvider.call)
metodo con i seguenti parametri:
- Autorità:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI - Metodo:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE Argomento:
@SystemAPI CellBroadcast.PreferenceEcco un elenco delle chiavi delle preferenze condivise supportate per il modulo CellBroadcast. I dati provengono da
SharedPreferencesper ilContentProvider.callmetodo.
Per eseguire la migrazione della cronologia dei messaggi al modulo CellBroadcast, l'
APK CellBroadcastContentProvider deve supportare il
ContentProvider.query
metodo con i seguenti parametri:
- Autorità:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. L'elenco delle colonne di query supporta le proprietà dei messaggi per il modulo CellBroadcast. Accetta i dati (dal tuo database) per il metodoContentProvider.query.
Per un'implementazione di riferimento per CellBroadcastContentProvider, consulta LegacyCellBroadcastContentProvider.
Test
La suite di test di compatibilità Android (CTS) verifica la funzionalità delle API di sistema dipendenti dalle app. Puoi anche eseguire i
unit tests/testappsp del modulo CellBroadcast.
Se l'OEM ha attivato il codice segreto CMAS per un dispositivo, questo 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 i messaggi duplicati o i messaggi in un'altra lingua.
I messaggi mostrano tutti i parametri disponibili, inclusi il numero di serie, l'ID messaggio e la data di scadenza.
Per attivare la modalità di debug, digita *#*#CMAS#*#* sul tastierino numerico.
Contatto
Per ulteriori dettagli o domande sul modulo CellBroadcast, contatta il gruppo di assistenza CellBroadcast.