Android 6.0 dan yang lebih tinggi menyertakan kemampuan untuk aplikasi untuk menyediakan konfigurasi khusus operator ke platform. Ini fungsi, berdasarkan Hak Istimewa Operator UICC yang diperkenalkan di Android 5.1 (Lollipop MR1), untuk dipindahkan dari overlay konfigurasi statis, kemampuan operator dan OEM untuk menyediakan konfigurasi operator secara dinamis untuk platform melalui antarmuka yang ditentukan.
Aplikasi operator yang ditandatangani dengan benar dapat dipramuat di {i>image<i} sistem, diinstal secara otomatis, atau diinstal secara manual melalui {i>app store<i}. Aplikasi dikueri oleh platform untuk memberikan konfigurasi setelan termasuk:
- Jaringan roaming/nonroaming
- Pesan suara visual
- Setelan jaringan SMS/MMS
- Konfigurasi VoLTE/IMS
Penentuan nilai yang akan ditampilkan sepenuhnya bergantung pada aplikasi operator dan dapat bersifat dinamis berdasarkan informasi mendetail yang diteruskan ke aplikasi melalui terkelola sepenuhnya.
Manfaat utama dari pendekatan ini adalah:
- Konfigurasi dinamis - Dukungan untuk konsep seperti konfigurasi turunan non-MCCMNC, misalnya, operator jaringan virtual seluler (MVNO) atau pelanggan yang memilih untuk ikut serta dalam layanan tambahan.
- Dukungan untuk perangkat yang dijual melalui saluran apa pun - Misalnya, telepon pasar terbuka dapat dikonfigurasi secara otomatis dengan setelan dengan mengunduh aplikasi dari {i>app store.<i}
- Keamanan - Hak istimewa untuk menyediakan konfigurasi ini hanya diberikan untuk aplikasi yang ditandatangani oleh operator.
- Defined API - Sebelumnya, konfigurasi ini disimpan sebagian besar di overlay XML internal di dalam framework dan bukan melalui Compute Engine API. API konfigurasi operator di Android 6.0 bersifat publik dan telah didefinisikan dengan baik.
Cara kerjanya
Memuat konfigurasi
Konfigurasi ekspedisi yang disediakan oleh fitur ini adalah rangkaian key-value pair yang mengubah berbagai perilaku terkait telepon dalam platform.
Set nilai untuk perangkat tertentu ditentukan dengan melakukan kueri komponen berikut secara berurutan:
- Aplikasi operator (ini opsional, tetapi direkomendasikan lokasi konfigurasi tambahan selain yang ada di Project Sumber (AOSP))
- Aplikasi konfigurasi platform yang dipaketkan dengan image sistem
- Nilai default, di-hardcode ke dalam framework (setara dengan perilaku sebelum ke Android 6.0)
Aplikasi konfigurasi platform
Aplikasi konfigurasi platform generik dipaketkan dengan image sistem. Aplikasi ini dapat menyediakan
untuk variabel apa pun yang tidak
dimiliki oleh aplikasi operator biasa. Konfigurasi platform
aplikasi dapat ditemukan (di Android 6.0) di: packages/apps/CarrierConfig
Tujuan aplikasi ini adalah menyediakan beberapa konfigurasi per jaringan saat operator aplikasi tidak diinstal, dan operator/OEM hanya boleh melakukan sedikit perubahan pada aplikasi dalam gambarnya sendiri. Sebagai gantinya, operator harus menyediakan aplikasi operator terpisah untuk penyesuaian operator, memungkinkan pembaruan didistribusikan melalui jalur seperti sebagai {i>app store<i}.
Cara hak istimewa diberikan ke aplikasi operator
Aplikasi operator yang dimaksud harus ditandatangani dengan sertifikat yang sama dengan yang ada di kartu SIM, sebagaimana didokumentasikan dalam Hak Istimewa Operator UICC.
Informasi yang diteruskan ke aplikasi operator
Aplikasi operator dilengkapi dengan nilai berikut, yang memungkinkannya melakukan keputusan dinamis mengenai nilai apa yang akan ditampilkan:
- MCC
- MNC
- SPN
- IMSI
- GID1
- GID2
- ID ekspedisi
Untuk informasi selengkapnya tentang mengintegrasikan ID operator, lihat Mengintegrasikan ID operator dengan CarrierConfig.
Terjadi pemuatan konfigurasi operator
Pembuatan daftar pasangan nilai kunci terjadi:
- Saat SIM dimuat (booting, atau hot swap SIM)
- Saat aplikasi operator memicu pemuatan ulang secara manual
- Saat aplikasi operator diupdate
Lihat
android.service.carrier.CarrierService#onLoadConfig()
referensi untuk detail selengkapnya.
Menggunakan konfigurasi
Saat konfigurasi dibuat, nilai yang ada di dalamnya akan digunakan untuk menetapkan berbagai nilai konfigurasi sistem, termasuk:
- Setelan telepon framework internal
- Nilai konfigurasi yang ditampilkan SDK, misalnya, di SmsManager
- Setelan aplikasi seperti nilai koneksi VVM di Telepon
Kunci konfigurasi
Daftar kunci ditentukan sebagai bagian dari SDK publik di android.telephony.CarrierConfigManager
dan tidak dapat diubah dalam level API yang sama. Lihat tabel di bawah untuk ringkasan kunci.
Membangun aplikasi
Membuat aplikasi
Aplikasi Anda harus menargetkan API level Android 6.0 (23).
Mendeklarasikan class yang mengganti android.service.carrier.CarrierService
- Ganti
onLoadConfig
untuk menampilkan nilai yang ingin Anda berikan berdasarkan objekservice.carrier.CarrierIdentifier
lulus. - Tambahkan logika untuk memanggil
notifyConfigChangedForSubId
dalam skenario yang konfigurasi operatornya dapat berubah seiring waktu (misalnya, saat menambahkan layanan ekstra ke akunnya).
Contohnya di bawah ini:
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; } }
Untuk mengetahui detail selengkapnya, lihat
android.service.carrier.CarrierService
alamat IP internal.
Memberi nama class dalam manifes
Contohnya di bawah ini:
<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>
Tanda tangani aplikasi dengan sertifikat di SIM
Lihat Hak Istimewa Operator UICC untuk mengetahui lainnya.
Menambahkan APN dengan aplikasi operator
Untuk menambahkan APN secara terprogram dari aplikasi operator (misalnya, selama SIM
aktivasi), gunakan
ContentResolver
API untuk menambahkan item APN ke penyedia konten
yang diidentifikasi oleh URI
android.provider.Telephony.Carriers.CONTENT_URI
.
Untuk informasi selengkapnya tentang struktur tabel untuk URI konten, lihat
Telephony.Carriers
.
Untuk informasi selengkapnya, lihat APN dan CarrierConfig.
Menguji aplikasi
Setelah membangun aplikasi konfigurasi, Anda dapat menguji kode dengan:
- SIM berisi tanda tangan sertifikat yang valid
- Perangkat yang menjalankan Android 6.0 dan yang lebih baru, misalnya perangkat Android
Menetapkan kemampuan layanan ekspedisi
Di Android, kemampuan layanan operator menjelaskan apakah suara, pesan, dan layanan data didukung di perangkat. Operator dapat menentukan ekspedisi kemampuan layanan untuk perangkat di tingkat perangkat dan pada langganan (Android 15 atau yang lebih baru).
Kemampuan layanan tingkat perangkat
Kemampuan layanan tingkat perangkat dikonfigurasi saat perangkat diproduksi (tidak dapat diubah setelah manufaktur). Operator dapat tentukan kemampuan tingkat perangkat melalui resource sistem berikut penggantian:
Aplikasi dapat mengkueri kemampuan layanan tingkat perangkat melalui hal berikut API:
Kemampuan layanan tingkat langganan
Untuk perangkat yang menjalankan Android 15 atau yang lebih baru, operator dapat menentukan
kemampuan layanan perangkat di level langganan. Untuk menentukan layanan tingkat langganan
kemampuan, gunakan
CarrierConfigManager.KEY_CELLULAR_SERVICE_CAPABILITIES_INT_ARRAY
Compute Engine API. Misalnya, untuk menentukan bahwa langganan hanya berisi data, setel nilai ke
SubscriptionManager#SERVICE_CAPABILITY_DATA
.
Aplikasi (aplikasi sistem yang telah dimuat sebelumnya dan aplikasi pihak ketiga) dapat mengkueri operator
kemampuan layanan untuk langganan tertentu melalui
SubscriptionInfo.getServiceCapabilities()
. Hal ini memungkinkan developer aplikasi menyesuaikan pengalaman pengguna aplikasi berdasarkan
kemampuan yang tersedia untuk langganan. Misalnya, developer aplikasi dapat
pastikan aplikasi telepon tidak mengizinkan panggilan jika pengguna sedang
langganan data saja.
API kemampuan layanan yang tidak digunakan lagi
Mulai Android 15, Android menyediakan tingkat perangkat dan kemampuan layanan tingkat langganan Anda. Karena perubahan ini, setelan tingkat perangkat yang ada API kapabilitas baru diganti namanya agar lebih mudah dibaca. Tabel berikut mencantumkan API yang tidak digunakan lagi dan API yang diganti namanya, yang diperkenalkan di Android 15:
Tidak digunakan lagi (Android 14 atau yang lebih rendah) | Setara (Android 15 atau yang lebih baru) |
---|---|
TelephonyManager.isVoiceCapable() |
TelephonyManager.isDeviceVoiceCapable() |
TelephonyManager.isSmsCapable() |
TelephonyManager.isDeviceSmsCapable() |