Il modulo CellBroadcast riduce le attività ripetitive per gli OEM (il che a sua volta riduce la frammentazione nell'ecosistema Android e offre un comportamento coerente agli utenti finali) e contribuisce a semplificare i test e la certificazione dell'operatore per i requisiti relativi a CellBroadcast (in quanto il codice non può essere modificato dagli OEM). Questo modulo è aggiornabile, il che significa che può ricevere aggiornamenti alle funzionalità al di fuori del normale ciclo di rilascio di Android.
Formato del pacchetto
Il modulo CellBroadcast è costituito dal seguente servizio e dall'app.
Il servizio CellBroadcastService supporta la decodifica degli SMS CellBroadcast, la recinzione virtuale per l'avviso di emergenza wireless (WEA) 3.0, i controlli di duplicazione dei messaggi e la trasmissione di messaggi alle app. Si tratta di un servizio di messaggistica one-to-many con targeting geografico e recinti virtuali progettato per inviare contemporaneamente messaggi a più utenti di cellulari in un'area definita. Il servizio è definito dal comitato GSM dell'ETSI, 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 (ad esempio gli avvisi di avviso 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 dei messaggi CellBroadcast.
Figura 1. Flusso di messaggi di CellBroadcastReceiver
Il livello di interfaccia radio (RIL) invia una notifica a
InBoundSMSHandler
su un SMS di CellBroadcast CDMA/GSM.Il framework inoltra l'SMS di CellBroadcast al modulo CBS per analizzare e 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
Le app CellBroadcastService e 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 in
package/app/CellBroadcastReceiver
ed esegue la migrazione delle classi del framework esistenti a
packages/modules/CellBroadcastService
.
Dipendenze dei moduli
Il modulo CellBroadcast interagisce con il framework utilizzando solo @SystemApi
stabili (nessuna API @hide
) e dipende dalle seguenti librerie statiche.
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 delle autorizzazioni
Il modulo CellBroadcast è firmato con una firma di Google anziché con una firma della piattaforma, il che significa che il modulo perde l'accesso alle autorizzazioni di firma.
Android 11, invece, definisce la nuova com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
autorizzazione di firma
all'interno del modulo CellBroadcast. Solo i pacchetti del modulo possono ottenere l'autorizzazione poiché 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 all'app SMS di sistema predefinita l'autorizzazione di runtime android.permission.READ_CELL_BROADCASTS
per accedere alla cronologia degli avvisi di emergenza.
Integrare il modulo CellBroadcast
Questa sezione descrive come integrare il modulo CellBroadcast.
Eseguire l'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
l'app CellBroadcastReceiver dall'app Impostazioni, modifica le seguenti
configurazioni di impostazione 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 le app di messaggistica
Puoi integrare un link a un'app nelle app di messaggistica per aprire la cronologia dei messaggi di CellBroadcast. Nell'app Android Messaggi, 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
.
Integrazione con la Posta in arrivo SMS
Puoi attivare la visualizzazione dei messaggi CellBroadcast nell'app di messaggistica predefinita overriding la seguente configurazione utilizzando un overlay delle 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
al modulo CellBroadcast per fornire assistenza end-to-end. Per un'implementazione di riferimento AOSP, consulta questa patchSmsApplication.java
.
Avvia l'app CellBroadcastReceiver
L'app CellBroadcastReceiver ha i seguenti punti di avvio.
Il menu dell'app Impostazioni.
Un'app (incluse app di terze parti), ad esempio un'app di messaggistica, 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 lancio.
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
Aggiungere icone di avvio
Puoi attivare l'accesso alla cronologia dei messaggi CellBroadcast dall'Avvio applicazioni e tramite le tue icone di avvio.
Per consentire l'accesso alla cronologia dei messaggi dal programma di avvio app, sostituisci la 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" />
Attivare il codice segreto CMAS
Per attivare il codice segreto CMAS, *#*#CMAS#*#* (*#*#2627#*#* sul tastierino), un'app Telefono deve ascoltare il codice speciale del tastierino sotto forma di *#*#code#*#* e gestirlo utilizzando il metodo pubblico sendDialerSpecialCode
.
Requisito relativo alle informazioni sull'area: canale 50
Il canale 50 è un canale speciale per le emittenti che trasmettono informazioni relative all'area (tranne MTN in Sudafrica). Per questo canale, i messaggi di trasmissione non generano una finestra di dialogo o una notifica. I messaggi di trasmissione vengono visualizzati nello stato della SIM del menu Impostazioni o nella barra di stato (ad esempio, la visualizzazione di un codice postale).
L'implementazione di Android CellBroadcastService fornisce il supporto per le seguenti API nel servizio di trasmissione cellulare per consentire alle app Impostazioni e UI del sistema di ricevere le informazioni sul canale di trasmissione 50. Per implementare questa funzionalità:
Registra la trasmissione
android.telephony.action.AREA_INFO_UPDATED
e sostituisci il nome del pacchetto del ricevitoreconfig_area_info_receiver_packages
tramite un RRO.Esegui il binding a
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Poiché le app Impostazioni e SystemUI non rientrano nell'ambito del modulo CellBroadcast, devi implementare le modifiche in SystemUI o nell'app Impostazioni per fornire assistenza 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 gli overlay delle risorse di runtime (RRO) per attivare (o disattivare) i parametri (ad esempio, puoi personalizzare il colore delle notifiche e le dimensioni nelle finestre di dialogo). Per sostituire i valori predefiniti dei parametri utilizzati nel modulo CellBroadcast, modifica il nome del pacchetto di destinazione incom.android.cellbroadcastreceiver
. Inoltre:
Per un elenco delle configurazioni sovrapponibili, consulta
overlayable.xml
.Per un esempio di implementazione, consulta
RROSampleTestApp
in AOSP.
Se nell'implementazione mancano le risorse di traduzione delle stringhe dell'interfaccia utente o se le traduzioni non soddisfano le tue aspettative, puoi sostituire le risorse di traduzione utilizzando un RRO o collaborare con il team di traduzione di Google per inviare le traduzioni delle stringhe al modulo CellBroadcast. Se sostituisci le risorse di traduzione, Google deve esporre queste stringhe in overlayable.xml
per consentire la sostituzione. Se hai bisogno di altre configurazioni per la personalizzazione dell'interfaccia utente, contatta il gruppo di assistenza CellBroadcast.
Esegui migrazione dati
Android 11 include un'app CellBroadcast precedente, che è un meccanismo per preservare e 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 Android che utilizzano il modulo CellBroadcast devono includere l'app CellBroadcast precedente nella build per la migrazione dei dati. Se la tua implementazione utilizza una soluzione CellBroadcast personalizzata, devi definire un APK CellBroadcastContentProvider per conservare i dati (puoi rimuovere in sicurezza l'APK CellBroadcast precedente in una release successiva).
Sui dispositivi di cui è stato eseguito l'upgrade per utilizzare il modulo CellBroadcast, il modulo recupera i dati dall'app LegacyCellBroadcastApp di AOSP o dall'APK CellBroadcastContentProvider definito dall'OEM tramite l'autorità cellbroadcast-legacy
ben definita.
Utilizzare un APK CellBroadcastContentProvider definito dall'OEM
Quando definisci un APK CellBroadcastContentProvider, questo deve rispettare queste specifiche.
L'APK è un APK senza interfaccia utente che mostra solo i contenuti del database e
SharedPreferences
tramite unContentProvider
oggetto con l'autoritàcellbroadcast-legacy
e 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 metodo 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 delle chiavi delle preferenze condivise supportate per il modulo CellBroadcast. I dati provengono da
SharedPreferences
per il metodoContentProvider.call
.
Per eseguire la migrazione della cronologia dei messaggi al modulo CellBroadcast, l'APK CellBroadcastContentProvider deve supportare il metodo ContentProvider.query
con i seguenti parametri:
- Autorità:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Le colonne di query elencano le proprietà dei messaggi supportate per il modulo CellBroadcast. Riceve i dati (dal 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 dall'app. Puoi anche eseguire il modulo CellBroadcast
unit tests/testappsp
.
Se l'OEM ha attivato il codice segreto CMAS per un dispositivo, questo può supportare la modalità di debug con le seguenti funzionalità.
Gli avvisi di test 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 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, componi *#*#CMAS#*#* nella tastiera.
Contatto
Per ulteriori dettagli o domande sul modulo CellBroadcast, contatta il gruppo di assistenza CellBroadcast.