Konfiguracja operatora

W Androidzie 6.0 i nowszych jest funkcja uprawnień udostępniając na platformie konfigurację specyficzną dla operatora. Ten funkcji opartych na uprawnieniach operatora UICC. wprowadzonych w Androidzie 5.1 (Lollipop MR1) umożliwia operatorowi konfiguracji należy odsunąć od nakładek konfiguracji statycznej, co zapewnia możliwość dynamicznego dostarczania konfiguracji operatora platformy za pomocą zdefiniowanego interfejsu.

Prawidłowo podpisana aplikacja operatora może być wstępnie wczytana w obrazie systemu, instalowane automatycznie lub ręcznie ze sklepu z aplikacjami. Aplikacja jest wysyłana przez platformę w celu udostępnienia konfiguracji ustawień w tym:

  • Sieci w roamingu/inne niż roaming
  • Wizualna poczta głosowa
  • Ustawienia sieci dla SMS-ów/MMS-ów
  • Konfiguracje VoLTE/IMS
.

To, jakie wartości należy zwrócić, zależy wyłącznie od aplikacji operatora i może być dynamiczny na podstawie szczegółowych informacji przekazanych do aplikacji za pomocą platformy.

Najważniejsze zalety tego podejścia to:

  • Konfiguracja dynamiczna – obsługa pojęć takich jak: konfigurację pochodną spoza MCKMNC, na przykład operatorzy komórkowych sieci wirtualnych lub klienci decydują się na korzystanie z usług dodatkowych.
  • Obsługa urządzeń sprzedawanych w dowolnym kanale – np. telefon na rynku otwartym można automatycznie skonfigurować pobierając aplikację ze sklepu z aplikacjami.
  • Zabezpieczenia – uprawnienie do udostępniania tej konfiguracji to tylko aplikacjom podpisanym przez operatora.
  • Zdefiniowany interfejs API – wcześniej ta konfiguracja była przechowywana. głównie w wewnętrznych nakładkach XML w ramach struktury, a nie za pośrednictwem publicznego API. Interfejs API konfiguracji operatora w Androidzie 6.0 jest publiczny i dobrze zdefiniowany.

Jak to działa

Wczytywanie konfiguracji

Konfiguracja operatora udostępniana przez tę funkcję to zbiór par klucz-wartość które zmieniają różne zachowania związane z telefonami na platformie.

Zbiór wartości dla danego urządzenia jest określany na podstawie zapytania następujące komponenty w kolejności:

  1. aplikację operatora (jest to opcjonalne, ale zalecane, lokalizacja na potrzeby dodatkowej konfiguracji poza tą dostępną w Androidzie Open; Projekt źródłowy (AOSP)
  2. Aplikacja do konfiguracji platformy powiązana z obrazem systemu
  3. Wartości domyślne zakodowane na stałe w platformie (odpowiednik poprzedniego działania do Androida 6.0)
.

Aplikacja do konfiguracji platformy

Z obrazem systemu jest połączona aplikacja do ogólnej konfiguracji platformy. Ta aplikacja może dostarczyć wszystkich zmiennych, których nie ma w przypadku standardowej aplikacji operatora. Konfiguracja platformy aplikację można znaleźć (w Androidzie 6.0) w: packages/apps/CarrierConfig

Celem tej aplikacji jest zapewnianie pewnej konfiguracji dla poszczególnych sieci, gdy operator nie jest zainstalowana, a operatorzy/OEM powinni wprowadzić w niej nieznaczne zmiany na własnych obrazach. Operatorzy powinni udostępnić osobną aplikację operatora w celu dostosowania do operatora, co umożliwia rozpowszechnianie aktualizacji za pomocą takich kanałów jako sklepy z aplikacjami.

Sposób przyznawania uprawnień aplikacji operatora

Aplikacja operatora, której dotyczy zgłoszenie, musi być podpisana tym samym certyfikatem, który znajduje się na stronie kartę SIM, zgodnie z uprawnieniami operatora UICC.

Jakie informacje są przekazywane do aplikacji operatora

Aplikacja operatora jest dostarczana z tymi wartościami, co umożliwia jej utworzenie dynamiczną decyzję co do wartości do zwrócenia:

  • MCC
  • MNC
  • SPN
  • IMSI
  • Identyfikator GID1
  • Identyfikator GID2
  • Identyfikator operatora

Więcej informacji na temat integrowania identyfikatorów operatorów znajdziesz w artykule integrowanie identyfikatorów operatorów z CarrierConfig.

Podczas wczytywania konfiguracji operatora

Lista par klucz-wartość tworzy się:

  • Po załadowaniu karty SIM (uruchamianie lub zamiana karty SIM z pamięci)
  • Gdy aplikacja operatora ręcznie rozpoczyna ponowne załadowanie
  • Kiedy aplikacja operatora jest aktualizowana

Zobacz android.service.carrier.CarrierService#onLoadConfig() tutaj znajdziesz więcej informacji.

Użyj konfiguracji

Podczas tworzenia konfiguracji używane są zawarte w niej wartości do ustawienia różnych wartości konfiguracji systemu, w tym:

  • Ustawienia telefonii wewnętrznej
  • Wartości konfiguracyjne zwrócone przez SDK, np. w SmsManager
  • Ustawienia aplikacji, takie jak wartości połączeń VVM w Telefonie

Klucze konfiguracji

Lista kluczy jest zdefiniowana jako część publicznego pakietu SDK w android.telephony.CarrierConfigManager i nie można zmienić w ramach tego samego poziomu API. W tabeli poniżej znajdziesz podsumowanie kluczy.

Utwórz aplikację

Tworzenie aplikacji

Aplikacja musi być kierowana na poziom API Androida 6.0 (23).

Zadeklaruj klasę, która zastępuje android.service.carrier.CarrierService

  1. Zastąp onLoadConfig, aby zwrócić odpowiednie wartości źródło na podstawie obiektu service.carrier.CarrierIdentifier zaliczono.
  2. Dodaj funkcje logiczne do wywoływania funkcji notifyConfigChangedForSubId w scenariuszach konfiguracja operatora może się z czasem zmieniać (na przykład gdy doda do swojego konta dodatkowe usługi).

Oto przykład:

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;
    }
}

Więcej informacji: android.service.carrier.CarrierService odwołania.

Nazwij klasę w pliku manifestu

Oto przykład:

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

Podpisz aplikację tym samym certyfikat na karcie SIM

Zobacz Uprawnienia operatora UICC dotyczące .

Dodaj punkty APN za pomocą aplikacji operatora

Aby automatycznie dodać punkty APN, używając aplikacji operatora (na przykład podczas korzystania z karty SIM) aktywacji), należy użyć funkcji Interfejsy API ContentResolver służące do dodawania elementów APN do dostawcy treści identyfikowane przez identyfikator URI . android.provider.Telephony.Carriers.CONTENT_URI Więcej informacji o strukturze tabeli dla identyfikatora URI treści znajdziesz w artykule Telephony.Carriers

Więcej informacji: APN i CarrierConfig

Wypróbuj aplikację

Gdy masz już aplikację konfiguracyjną, możesz przetestować jej kod z:

  • Karta SIM z prawidłowym podpisem certyfikatu
  • Urządzenie z Androidem 6.0 lub nowszym, na przykład urządzenie z Androidem