Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Configurazione dell'operatore

Android 6.0 e versioni successive includono la possibilità per le app privilegiate di fornire alla piattaforma una configurazione specifica dell'operatore. Questa funzionalità, basata sui privilegi di operatore UICC introdotti in Android 5.1 (Lollipop MR1), consente di spostare la configurazione del corriere dagli overlay di configurazione statici e offre ai gestori e agli OEM la possibilità di fornire dinamicamente la configurazione del corriere alla piattaforma attraverso un'interfaccia definita.

Un'app di operatore correttamente firmata può essere precaricata nell'immagine di sistema, installata automaticamente o installata manualmente tramite un app store. L'app viene interrogata dalla piattaforma per fornire la configurazione per le impostazioni, tra cui:

  • Reti di roaming / non-roaming
  • Segreteria visiva
  • Impostazioni di rete SMS / MMS
  • Configurazioni VoLTE / IMS

La determinazione di quali valori restituire dipende interamente dall'app vettore e può essere dinamica in base a informazioni dettagliate passate all'app attraverso la piattaforma.

I principali vantaggi di questo approccio sono:

  • Configurazione dinamica : supporto per concetti come la configurazione non derivata da MCCMNC, ad esempio operatori di reti virtuali mobili (MVNO) o clienti che optano per servizi extra.
  • Supporto per dispositivi venduti attraverso qualsiasi canale - Ad esempio, un telefono aperto può essere configurato automaticamente con le giuste impostazioni scaricando un'app da un app store.
  • Sicurezza : il privilegio di fornire questa configurazione è dato solo alle app firmate dal corriere.
  • API definita : in precedenza questa configurazione era archiviata principalmente in overlay XML interni nel framework e non tramite un'API pubblica. L'API di configurazione dell'operatore in Android 6.0 è pubblica e ben definita.

Come funziona

Caricamento della configurazione

La configurazione del gestore telefonico fornita da questa funzione è un insieme di coppie chiave-valore che modificano i vari comportamenti relativi alla telefonia nella piattaforma.

L'insieme di valori per un determinato dispositivo viene determinato interrogando i seguenti componenti in ordine:

  1. L'app del corriere (questo è facoltativo, ma è la posizione consigliata per una configurazione aggiuntiva oltre a quella esistente nel progetto Android Open Source (AOSP))
  2. L'app di configurazione della piattaforma in bundle con l'immagine di sistema
  3. Valori predefiniti, codificati nel framework (equivalente al comportamento precedente ad Android 6.0)

L'app di configurazione della piattaforma

Un'app di configurazione della piattaforma generica è inclusa nell'immagine di sistema. Questa app può fornire valori per tutte le variabili che l'app per operatore di rete normale non ha. L'app di configurazione della piattaforma è disponibile (in Android 6.0) in: packages/apps/CarrierConfig

Lo scopo di questa app è fornire una configurazione per rete quando un'app di operatore non è installata e i gestori / OEM dovrebbero apportare solo modifiche minime ad essa nelle proprie immagini. I gestori dovrebbero invece fornire l'app di corriere separata per la personalizzazione del corriere, consentendo la distribuzione degli aggiornamenti attraverso viali come app store.

Come viene concesso il privilegio a un'app di operatore

L'app del corriere in questione deve essere firmata con lo stesso certificato trovato sulla carta SIM, come documentato nei privilegi del corriere UICC .

Quali informazioni vengono trasmesse all'app dell'operatore telefonico

L'app del corriere viene fornita con i seguenti valori, che consente di prendere una decisione dinamica su quali valori restituire:

  • MCC
  • MNC
  • SPN
  • IMSI
  • GID1
  • GID2
  • ID operatore

Per ulteriori informazioni sull'integrazione degli ID vettore, vedere Integrazione degli ID vettore con CarrierConfig .

Durante il caricamento si verifica la configurazione del corriere

Si verifica la costruzione dell'elenco delle coppie chiave-valore:

  • Quando la SIM è caricata (avvio o SIM hot swap)
  • Quando l'app dell'operatore attiva manualmente un ricaricamento
  • Quando l'app del corriere viene aggiornata

Consulta il riferimento android.service.carrier.CarrierService#onLoadConfig() per maggiori dettagli.

Usando la configurazione

Quando viene creata la configurazione, i valori al suo interno vengono utilizzati per impostare vari valori di configurazione del sistema, tra cui:

  • Impostazioni di telefonia del framework interno
  • Valori di configurazione restituiti dall'SDK, ad esempio in SmsManager
  • Impostazioni dell'app come i valori di connessione VVM nel Dialer

Chiavi di configurazione

L'elenco delle chiavi è definito come parte dell'SDK pubblico in android.telephony.CarrierConfigManager e non può cambiare all'interno dello stesso livello API. Vedere la tabella seguente per un riepilogo delle chiavi.

Costruire l'app

Creazione dell'app

L'app deve essere indirizzata al livello API di Android 6.0 (23).

Dichiarazione di una classe che sostituisce android.service.carrier.CarrierService

  1. Sostituisci onLoadConfig per restituire i valori che desideri fornire in base all'oggetto service.carrier.CarrierIdentifier passato.
  2. Aggiungi logica per chiamare notifyConfigChangedForSubId in scenari in cui la configurazione del gestore telefonico può cambiare nel tempo (ad esempio, quando l'utente aggiunge servizi extra al proprio account).

Un esempio è di seguito:

public class SampleCarrierConfigService extends CarrierService {

    private static final String TAG = "SampleCarrierConfigService";

    public SampleCarrierConfigService() {
        Log.d(TAG, "Service created");
    }

    @Override
    public PersistableBundle onLoadConfig(CarrierIdentifier id) {
        Log.d(TAG, "Config being fetched");
        PersistableBundle config = new PersistableBundle();
        config.putBoolean(
            CarrierConfigManager.KEY_CARRIER_VOLTE_AVAILABLE_BOOL, true);
        config.putBoolean(
            CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL, false);
        config.putInt(CarrierConfigManager.KEY_VOLTE_REPLACEMENT_RAT_INT, 6);
        // Check CarrierIdentifier and add more config if needed…
        return config;
    }
}

Per maggiori dettagli, consultare il riferimento android.service.carrier.CarrierService .

Assegnare un nome alla classe nel manifest

Un esempio è di seguito:

<service android:name=".SampleCarrierConfigService"
android:label="@string/service_name"
android:permission="android.permission.BIND_CARRIER_SERVICES">
      <intent-filter>
      <action android:name="android.service.carrier.ConfigService"/></intent-filter>
</service>

Firma dell'app con lo stesso certificato sulla SIM

Consultare i privilegi del gestore UICC per i requisiti.

Test dell'app

Dopo aver creato l'app di configurazione, puoi testare il tuo codice con:

  • Una SIM contenente una firma del certificato valida
  • Un dispositivo con Android 6.0 e versioni successive, ad esempio un dispositivo Android