Modul CellBroadcast mengurangi upaya berulang untuk OEM (yang pada akhirnya mengurangi fragmentasi di seluruh ekosistem Android dan memberikan perilaku yang konsisten kepada pengguna akhir) serta membantu menyederhanakan pengujian operator dan sertifikasi untuk persyaratan terkait CellBroadcast (karena kode tidak dapat diubah oleh OEM). Modul ini dapat diupdate, artinya modul ini dapat menerima update untuk fungsi di luar siklus rilis Android normal.
Format paket
Modul CellBroadcast terdiri dari layanan dan aplikasi berikut.
Layanan CellBroadcastService mendukung decoding SMS CellBroadcast, pembatasan wilayah untuk peringatan darurat nirkabel (WEA) 3.0, pemeriksaan duplikasi pesan, dan menyiarkan pesan ke aplikasi. Ini adalah layanan pesan satu ke banyak yang ditargetkan secara geografis dan dibatasi wilayah geografis yang dirancang untuk mengirimkan pesan ke beberapa pengguna ponsel, di area yang ditentukan, secara bersamaan. Layanan ini ditentukan oleh komite GSM ETSI, 3GPP, dan merupakan bagian dari standar telekomunikasi.
Aplikasi CellBroadcastReceiver adalah aplikasi sistem default yang menangani notifikasi darurat dan nondarurat (seperti notifikasi amber dan presidensial) serta menampilkan informasi kepada pengguna akhir berdasarkan peraturan operator dan regional.
Alur pesan CellBroadcast
Gambar berikut menunjukkan alur pesan CellBroadcast.
Gambar 1. Alur pesan CellBroadcastReceiver
Lapisan antarmuka radio (RIL) memberi tahu
InBoundSMSHandler
tentang SMS CellBroadcast CDMA/GSM.Framework meneruskan SMS CellBroadcast ke modul CBS untuk mengurai dan memproses pesan yang masuk.
Setelah pesan diproses, CellBroadcastService meneruskan intent ke aplikasi CellBroadcastReceiver default sistem.
Aplikasi CellBroadcastReceiver menampilkan pesan kepada pengguna.
Format modul
Aplikasi CellBroadcastService dan CellBroadcastReceiver disertakan dalam
satu file APEX
(com.android.cellbroadcast
), yang tersedia untuk perangkat yang menjalankan
Android 11 atau yang lebih tinggi. Modul ini menyertakan kode di
package/app/CellBroadcastReceiver
dan memigrasikan class framework yang ada ke
packages/modules/CellBroadcastService
.
Dependensi modul
Modul CellBroadcast berinteraksi dengan framework hanya menggunakan
@SystemApi
stabil (tidak ada @hide
API) dan bergantung pada library statis berikut.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Anda dapat menyesuaikan konfigurasi menggunakan overlay resource runtime (RRO).
Konfigurasi izin
Modul CellBroadcast ditandatangani dengan tanda tangan Google, bukan tanda tangan
platform, yang berarti modul kehilangan akses ke izin tanda tangan.
Sebagai gantinya, Android 11 menentukan izin tanda tangan
baru com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
di dalam modul CellBroadcast; hanya paket dalam modul yang dapat memperoleh
izin karena ditandatangani dengan kunci yang sama. Izin ini memungkinkan
aplikasi CellBroadcastReceiver memiliki akses penuh ke database di dalam
CellBroadcastService.
Platform ini memberikan izin runtime
android.permission.READ_CELL_BROADCASTS
ke aplikasi SMS sistem default untuk mengakses histori pemberitahuan
darurat.
Mengintegrasikan modul CellBroadcast
Bagian ini menjelaskan cara mengintegrasikan modul CellBroadcast.
Mengintegrasikan dengan Setelan
Anda dapat memutuskan tempat untuk mengintegrasikan setelan CellBroadcast di aplikasi Setelan
(pengguna akhir mengakses halaman setelan CellBroadcast dari Setelan >
Aplikasi & Notifikasi > Lanjutan > Peringatan darurat). Untuk meluncurkan
aplikasi CellBroadcastReceiver dari aplikasi Setelan, ubah konfigurasi setelan
berikut dengan nama paket
com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Mengintegrasikan dengan aplikasi pesan
Anda dapat mengintegrasikan link aplikasi ke aplikasi pesan untuk membuka histori pesan
CellBroadcast. Di aplikasi Android Message, fitur ini telah terintegrasi ke dalam
Setelan > Lanjutan > Peringatan darurat. Untuk mengintegrasikan link di
aplikasi pesan Anda sendiri, tentukan jalur di aplikasi pesan dan konfigurasikan
nama komponen untuk modul CellBroadcast sebagai
com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Mengintegrasikan dengan kotak masuk SMS
Anda dapat mengaktifkan tampilan pesan CellBroadcast di aplikasi pesan default dengan mengganti konfigurasi berikut menggunakan overlay resource runtime.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Karena pemberian izin berada di luar cakupan modul CellBroadcast,
Anda harus memberikan izin AppOpsManager.OP_WRITE_SMS
ke modul
CellBroadcast untuk memberikan dukungan menyeluruh. Untuk implementasi referensi AOSP,
lihat patch SmsApplication.java
ini.
Meluncurkan aplikasi CellBroadcastReceiver
Aplikasi CellBroadcastReceiver memiliki titik peluncuran berikut.
Menu aplikasi Setelan.
Aplikasi (termasuk aplikasi pihak ketiga) seperti aplikasi pesan yang ditautkan ke histori pesan CellBroadcast.
(Opsional) Ikon peluncuran dari layar utama Android yang ditambahkan oleh OEM. Untuk mengetahui detailnya, lihat Menambahkan ikon peluncuran.
Setelan aplikasi CellBroadcastReceiver
Screenshot berikut menampilkan menu setelan aplikasi CellBroadcastReceiver.
Gambar 2. Menu setelan aplikasi CellBroadcastReceiver
Gambar 3. Layar histori peringatan darurat
Menambahkan ikon peluncuran
Anda dapat mengaktifkan akses ke histori pesan CellBroadcast dari peluncur aplikasi dan melalui ikon peluncur Anda sendiri.
Untuk mengaktifkan akses histori pesan dari peluncur aplikasi, ganti konfigurasi berikut menggunakan RRO.
<item type="bool" name="show_message_history_in_launcher" />
Untuk mengganti ikon default AOSP, ganti konfigurasi berikut menggunakan RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Mengaktifkan kode rahasia CMAS
Untuk mengaktifkan kode rahasia CMAS, *#*#CMAS#*#* (*#*#2627#*#* pada
tombol nomor), aplikasi telepon harus memproses kode telepon khusus dalam bentuk
*#*#code#*#* dan menangani kode menggunakan metode publik
sendDialerSpecialCode
.
Persyaratan info area: Channel 50
Channel 50 adalah saluran khusus bagi operator untuk menyiarkan informasi terkait area (kecuali untuk MTN di Afrika Selatan). Untuk saluran ini, pesan siaran tidak menghasilkan dialog atau notifikasi. Sebagai gantinya, pesan siaran muncul di status SIM menu Setelan, atau di status bar (misalnya, menampilkan kode pos).
Implementasi CellBroadcastService Android memberikan dukungan untuk API berikut di layanan siaran sel untuk aplikasi Setelan dan SysUI guna mendapatkan informasi Channel 50 siaran. Untuk menerapkannya, lakukan hal berikut:
Daftarkan
android.telephony.action.AREA_INFO_UPDATED
siaran dan ganti nama paket penerimaconfig_area_info_receiver_packages
melalui RRO.Ikat ke
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Karena aplikasi Setelan dan SysUI berada di luar cakupan modul CellBroadcast, Anda harus menerapkan perubahan di SystemUI atau aplikasi Setelan untuk memberikan dukungan menyeluruh. Untuk implementasi referensi, lihat aplikasi Setelan CellBroadcastService.
Penyesuaian
Anda tidak dapat langsung mengubah kode sumber modul CellBroadcast, tetapi Anda
dapat menggunakan runtime resource overlay
(RRO) untuk
mengaktifkan (atau menonaktifkan) parameter
(misalnya, Anda dapat menyesuaikan warna notifikasi dan
dimensi pada dialog). Untuk mengganti nilai default parameter yang digunakan dalam
modul CellBroadcast, ubah nama paket target menjadi
com.android.cellbroadcastreceiver
. Selain itu:
Untuk daftar konfigurasi yang dapat ditempatkan, lihat
overlayable.xml
.Untuk contoh implementasi, lihat
RROSampleTestApp
di AOSP.
Jika implementasi tersebut tidak memiliki resource terjemahan string UI atau jika
terjemahan tidak memenuhi harapan, Anda dapat mengganti resource
terjemahan menggunakan RRO atau bekerja sama dengan tim terjemahan Google untuk melakukan terjemahan
string upstream ke modul CellBroadcast. Jika Anda mengganti resource
terjemahan, Google harus mengekspos string tersebut di overlayable.xml
untuk mengizinkan
penggantian. Jika Anda memerlukan konfigurasi lainnya untuk penyesuaian UI, hubungi
grup dukungan CellBroadcast.
Migrasikan data
Android 11 menyertakan aplikasi CellBroadcast lama, yang merupakan mekanisme untuk mempertahankan dan memigrasikan data aplikasi (termasuk setelan pengguna dan histori pemberitahuan darurat) untuk perangkat yang mengupgrade ke modul CellBroadcast. Implementasi Android yang menggunakan modul CellBroadcast harus menyertakan aplikasi CellBroadcast lama dalam build untuk migrasi data. Jika penerapan Anda menggunakan solusi CellBroadcast kustom, Anda harus menentukan APK CellBroadcastContentProvider untuk mempertahankan data (Anda dapat menghapus APK siaran sel lama dengan aman dalam rilis berikutnya).
Pada perangkat yang diupgrade untuk menggunakan modul CellBroadcast, modul tersebut mengambil data
dari AOSP LegacyCellBroadcastApp atau
APK CellBroadcastContentProvider yang ditentukan OEM melalui otoritas cellbroadcast-legacy
yang ditentukan dengan baik.
Menggunakan APK CellBroadcastContentProvider yang ditentukan OEM
Saat menentukan APK CellBroadcastContentProvider, APK harus mengikuti spesifikasi berikut.
APK ini adalah APK headless yang hanya menampilkan konten database dan
SharedPreferences
melalui objekContentProvider
dengan otorisasicellbroadcast-legacy
, dan tidak dapat diakses oleh aplikasi pihak ketiga.APK dikembangkan dan dimiliki oleh OEM, tempat OEM dapat terus menghosting skema API tersembunyinya.
Untuk memigrasikan SharedPreferences
ke modul CellBroadcast,
APK CellBroadcastContentProvider harus mendukung
metode
ContentProvider.call
)
dengan parameter berikut:
- Otoritas:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Metode:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Ini adalah daftar kunci preferensi bersama yang didukung untuk modul CellBroadcast. Data berasal dari
SharedPreferences
untuk metodeContentProvider.call
.
Untuk memigrasikan histori pesan ke modul CellBroadcast,
APK CellBroadcastContentProvider harus mendukung
metode
ContentProvider.query
dengan parameter berikut:
- Otoritas:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Kolom kueri mencantumkan properti pesan yang didukung untuk modul CellBroadcast. Mengambil data (dari database Anda) untuk metodeContentProvider.query
.
Untuk implementasi referensi CellBroadcastContentProvider,
, lihat
LegacyCellBroadcastContentProvider
.
Pengujian
Android Compatibility Test Suite (CTS) memverifikasi fungsi
API sistem yang bergantung pada aplikasi. Anda juga dapat menjalankan modul CellBroadcast
unit tests/testappsp
.
Jika OEM telah mengaktifkan kode rahasia CMAS untuk perangkat, perangkat tersebut dapat mendukung mode debug dengan fitur berikut.
Notifikasi pengujian dikelompokkan di bagian Notifikasi Lainnya dengan tombol aktif/nonaktif.
Histori mencakup semua pesan yang diterima, tetapi tidak ditampilkan, seperti pesan duplikat atau pesan dalam bahasa lain.
Pesan menampilkan semua parameter yang tersedia, termasuk nomor seri, ID pesan, dan tanggal habis masa berlaku.
Untuk mengaktifkan mode debug, tekan *#*#CMAS#*#* di telepon.
Kontak
Untuk detail atau pertanyaan lebih lanjut tentang modul CellBroadcast, hubungi grup dukungan CellBroadcast.