Android 6.0 ve üzeri, ayrıcalıklı uygulamaların platforma operatöre özel yapılandırma sağlamasına yönelik bir yetenek içerir. Android 5.1'de (Lollipop MR1) sunulan UICC Taşıyıcı Ayrıcalıklarını temel alan bu işlevsellik, taşıyıcı yapılandırmasının statik yapılandırma katmanlarından uzaklaştırılmasına olanak tanır ve taşıyıcılara ve OEM'lere, tanımlı bir arayüz aracılığıyla platforma taşıyıcı yapılandırmasını dinamik olarak sağlama yeteneği verir.
Düzgün şekilde imzalanmış bir operatör 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ğıdakiler de dahil olmak üzere ayarlar için yapılandırma sağlamak amacıyla platform tarafından sorgulanır:
- Dolaşımda olan/dolaşımda olmayan 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 platform aracılığıyla uygulamaya iletilen ayrıntılı bilgilere dayalı olarak dinamik olabilir.
Bu yaklaşımın temel faydaları şunlardır:
- Dinamik yapılandırma - Mobil sanal ağ operatörleri (MVNO'lar) veya müşterinin ekstra hizmetlere katılımı gibi MCCMNC'den türetilmemiş yapılandırma gibi kavramlar için destek.
- Herhangi bir kanal üzerinden satılan cihazlar için destek - Örneğin, açık pazardaki bir telefon, bir uygulama mağazasından bir uygulama indirilerek otomatik olarak doğru ayarlarla yapılandırılabilir.
- Güvenlik - Bu yapılandırmayı sağlama ayrıcalığı yalnızca operatör tarafından imzalanan 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 katmanlarında saklanı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 çiftinden oluşur.
Belirli bir cihazın değer kümesi, aşağıdaki bileşenlerin sırayla sorgulanmasıyla belirlenir:
- Operatör uygulaması (bu isteğe bağlıdır, ancak Android Açık Kaynak Projesi'nde (AOSP) mevcut olanın ötesinde ek yapılandırma için önerilen konumdur)
- Sistem görüntüsüyle birlikte verilen platform yapılandırma uygulaması
- Çerçeveye sabit kodlanmış varsayılan değerler (Android 6.0 öncesi 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ğer sağlayabilir. Platform yapılandırma uygulaması (Android 6.0'da) şurada bulunabilir: packages/apps/CarrierConfig
Bu uygulamanın amacı, bir operatör uygulaması yüklü olmadığında ağ başına bazı yapılandırmalar sağlamaktır ve operatörlerin/OEM'lerin kendi görsellerinde bu uygulama üzerinde yalnızca minimum düzeyde değişiklik yapması gerekir. Bunun yerine operatörlerin, operatör özelleştirmesi için ayrı bir operatör uygulaması sunması ve güncellemelerin uygulama mağazaları gibi yollardan dağıtılmasına izin vermesi gerekiyor.
Bir operatör uygulamasına ayrıcalık nasıl verilir?
Söz konusu operatör uygulamasının , UICC Operatör Ayrıcalıkları'nda belgelendiği gibi, SIM kartta bulunan sertifikayla aynı şekilde imzalanması gerekir.
Operatör uygulamasına hangi bilgiler aktarılır?
Taşıyıcı uygulaması, hangi değerlerin döndürüleceği konusunda dinamik bir karar vermesine olanak tanıyan aşağıdaki değerlerle sağlanır:
- MM
- Çokuluslu şirket
- SPN
- IMSI
- GID1
- GID2
- Operatör Kimliği
Operatör kimliklerini entegre etme hakkında daha fazla bilgi için bkz. Operatör kimliklerini CarrierConfig ile entegre etme .
Taşıyıcı yapılandırmasını yüklerken oluşur
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)
- Operatör uygulaması yeniden yükleme işlemini manuel olarak tetiklediğinde
- Operatör 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çindeki değerler aşağıdakiler de dahil olmak üzere sistem konfigürasyonunun çeşitli 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 tuşları
Anahtar listesi, android.telephony.CarrierConfigManager
genel SDK'nın parçası olarak tanımlanır ve aynı API düzeyinde değiştirilemez. Anahtarların özeti için aşağıdaki tabloya bakın.
Uygulamayı oluşturma
Uygulamayı oluşturma
Uygulamanız Android 6.0 API düzeyini (23) hedeflemelidir.
Android.service.carrier.CarrierService'i geçersiz kılan bir sınıf bildirmek
- Geçirilen
service.carrier.CarrierIdentifier
nesnesine göre sağlamak istediğiniz değerleri döndürmek içinonLoadConfig
geçersiz kılın. - Operatör yapılandırmasının zaman içinde değişebileceği senaryolarda (örneğin, kullanıcı hesabına ekstra hizmetler eklediğinde)
notifyConfigChangedForSubId
çağrısına mantık ekleyin.
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
referansına 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.
Operatör uygulamasıyla APN'ler ekleme
APN'leri bir operatör uygulamasından programlı olarak eklemek için (örneğin, SIM etkinleştirme sırasında), APN öğelerini android.provider.Telephony.Carriers.CONTENT_URI
URI'si tarafından tanımlanan bir içerik sağlayıcıya eklemek için ContentResolver
API'lerini kullanın. İçerik URI'sine ilişkin tablo yapısı hakkında daha fazla bilgi için bkz. Telephony.Carriers
.
Daha fazla bilgi için APN ve CarrierConfig'e bakın.
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ı)