Taşıyıcı Yapılandırması

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Android 6.0 ve üstü, ayrıcalıklı uygulamalar için platforma taşıyıcıya özel yapılandırma sağlama yeteneği içerir. Android 5.1'de (Lollipop MR1) tanıtılan UICC Taşıyıcı Ayrıcalıklarına dayanan bu işlevsellik, taşıyıcı yapılandırmasının statik yapılandırma kaplamalarından uzaklaştırılmasına olanak tanır ve taşıyıcılara ve OEM'lere, tanımlanmış bir arabirim aracılığıyla platforma dinamik olarak taşıyıcı yapılandırması sağlama yeteneği verir.

Doğru şekilde imzalanmış bir taşıyıcı uygulaması, sistem görüntüsüne önceden yüklenebilir, otomatik olarak yüklenebilir veya bir uygulama mağazası aracılığıyla manuel olarak yüklenebilir. Uygulama, aşağıdakileri içeren ayarlar için yapılandırma sağlamak üzere platform tarafından sorgulanır:

  • Dolaşımlı/dolaşımsız ağlar
  • Görsel sesli posta
  • SMS/MMS ağ ayarları
  • VoLTE/IMS yapılandırmaları

Hangi değerlerin döndürüleceğinin belirlenmesi tamamen operatör uygulamasına bağlıdır ve uygulamaya platform aracılığıyla iletilen ayrıntılı bilgilere dayalı olarak dinamik olabilir.

Bu yaklaşımın temel faydaları şunlardır:

  • Dinamik yapılandırma - Örneğin, mobil sanal ağ operatörleri (MVNO'lar) veya müşterinin ek hizmetleri seçmesi gibi MCCMNC'den türetilmemiş yapılandırma gibi kavramlar için destek.
  • Herhangi bir kanaldan satılan cihazlar için destek - Örneğin, bir açık pazar telefonu, bir uygulama mağazasından bir uygulama indirilerek doğru ayarlarla otomatik olarak yapılandırılabilir.
  • Güvenlik - Bu yapılandırmayı sağlama ayrıcalığı yalnızca operatör tarafından imzalanmış uygulamalara verilir.
  • Tanımlı API - Daha önce bu yapılandırma, genel bir API aracılığıyla değil, çoğunlukla çerçeve içindeki dahili XML kaplamalarında depolanıyordu. Android 6.0'daki taşıyıcı yapılandırma API'si herkese açıktır ve iyi tanımlanmıştır.

Nasıl çalışır

Yapılandırma yükleniyor

Bu özellik tarafından sağlanan taşıyıcı yapılandırması, platformdaki telefonla ilgili çeşitli davranışları değiştiren bir dizi anahtar/değer çiftidir.

Belirli bir cihaz için değer kümesi, aşağıdaki bileşenlerin sırayla sorgulanmasıyla belirlenir:

  1. Taşıyıcı uygulaması (bu isteğe bağlıdır, ancak Android Açık Kaynak Projesi'nde (AOSP) bulunanların ötesinde ek yapılandırma için önerilen konumdur)
  2. Sistem görüntüsüyle birlikte verilen platform yapılandırma uygulaması
  3. Çerçeveye kodlanmış varsayılan değerler (Android 6.0'dan önceki davranışa eşdeğer)

Platform yapılandırma uygulaması

Genel bir platform yapılandırma uygulaması, sistem görüntüsüyle birlikte gelir. Bu uygulama, normal operatör uygulamasının sağlamadığı tüm değişkenler için değerler sağlayabilir. Platform yapılandırma uygulaması şurada bulunabilir (Android 6.0'da): packages/apps/CarrierConfig

Bu uygulamanın amacı, bir taşıyıcı uygulaması yüklü olmadığında ağ başına bazı yapılandırmalar sağlamaktır ve taşıyıcılar/OEM'ler kendi görüntülerinde bu uygulama üzerinde yalnızca çok az değişiklik yapmalıdır. Bunun yerine, taşıyıcılar, güncellemelerin uygulama mağazaları gibi caddeler aracılığıyla dağıtılmasına izin vererek, taşıyıcı özelleştirmesi için ayrı bir taşıyıcı uygulaması sağlamalıdır.

Bir operatör uygulamasına ayrıcalık nasıl verilir?

Söz konusu operatör uygulaması, UICC Taşıyıcı Ayrıcalıklarında belgelendiği gibi SIM kartta bulunan sertifikayla imzalanmalıdır.

Taşıyıcı uygulamasına hangi bilgiler aktarılır?

Taşıyıcı uygulaması, hangi değerlerin döndürüleceği konusunda dinamik bir karar vermesini sağlayan aşağıdaki değerlerle sağlanır:

  • MM
  • ÇUŞ
  • SPN
  • IMSI
  • GID1
  • GID2
  • Taşıyıcı Kimliği

Taşıyıcı kimliklerini entegre etme hakkında daha fazla bilgi için bkz. Taşıyıcı kimliklerini CarrierConfig ile entegre etme.

Taşıyıcı yapılandırması yüklenirken gerçekleşir

Anahtar değer çiftleri listesinin oluşturulması şu şekilde gerçekleşir:

  • SIM yüklendiğinde (önyükleme veya SIM çalışırken değiştirme)
  • Taşıyıcı uygulaması manuel olarak yeniden yüklemeyi tetiklediğinde
  • Taşıyıcı uygulaması güncellendiğinde

Daha fazla ayrıntı için android.service.carrier.CarrierService#onLoadConfig() referansına bakın.

yapılandırmayı kullanma

Konfigürasyon oluşturulduğunda, içerdiği değerler, aşağıdakiler dahil olmak üzere çeşitli sistem konfigürasyonu değerlerini ayarlamak için kullanılır:

  • Dahili çerçeve telefon ayarları
  • SDK tarafından döndürülen yapılandırma değerleri, örneğin SmsManager'da
  • Çeviricideki VVM bağlantı değerleri gibi uygulama ayarları

Yapılandırma anahtarları

Anahtar listesi, android.telephony.CarrierConfigManager genel SDK'nın bir parçası olarak tanımlanır ve aynı API düzeyinde değiştirilemez. Anahtarların bir özeti için aşağıdaki tabloya bakın.

Uygulamayı oluşturma

Uygulamayı oluşturmak

Uygulamanız Android 6.0 API düzeyini (23) hedeflemelidir.

android.service.carrier.CarrierService öğesini geçersiz kılan bir sınıf bildirme

  1. Geçirilen service.carrier.CarrierIdentifier nesnesine dayalı olarak sağlamak istediğiniz değerleri döndürmek için onLoadConfig geçersiz kılın.
  2. Taşıyıcı yapılandırmasının zaman içinde değişebileceği senaryolarda notifyConfigChangedForSubId çağırmak için mantık ekleyin (örneğin, kullanıcı hesabına ekstra hizmetler eklediğinde).

Bir örnek aşağıdadır:

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

Daha fazla ayrıntı için android.service.carrier.CarrierService başvurusuna bakın.

Manifest'te sınıfı adlandırma

Bir örnek aşağıdadır:

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

Uygulamayı SIM'de aynı sertifikayla imzalama

Gereksinimler için UICC Taşıyıcı Ayrıcalıklarına bakın.

Bir operatör uygulamasıyla APN ekleme

APN'leri bir operatör uygulamasından programlı olarak eklemek için (örneğin, SIM etkinleştirmesi sırasında), URI android.provider.Telephony.Carriers.CONTENT_URI tarafından tanımlanan bir içerik sağlayıcıya APN öğeleri eklemek için ContentResolver API'lerini kullanın. İçerik URI'si için tablo yapısı hakkında daha fazla bilgi için bkz. Telephony.Carriers .

Daha fazla bilgi için bkz. APN ve CarrierConfig .

Uygulamayı test etme

Yapılandırma uygulamanızı oluşturduğunuzda, kodunuzu aşağıdakilerle test edebilirsiniz:

  • Geçerli bir sertifika imzası içeren bir SIM
  • Android 6.0 ve sonraki sürümleri çalıştıran bir cihaz, örneğin bir Android cihazı