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:
- 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)
- Sistem görüntüsüyle birlikte verilen platform yapılandırma uygulaması
- Ç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
- Geçirilen
service.carrier.CarrierIdentifier
nesnesine dayalı olarak sağlamak istediğiniz değerleri döndürmek içinonLoadConfig
geçersiz kılın. - 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ı