Modul CellBroadcast mengurangi upaya berulang bagi OEM (yang pada gilirannya mengurangi fragmentasi di seluruh ekosistem Android dan memberikan perilaku yang konsisten kepada pengguna akhir) serta membantu menyederhanakan pengujian dan sertifikasi operator untuk persyaratan terkait CellBroadcast (karena kode tidak dapat dimodifikasi oleh OEM). Modul ini dapat diupdate, yang berarti modul ini dapat menerima update fungsi di luar siklus rilis Android normal.
Format paket
Modul CellBroadcast terdiri dari layanan dan aplikasi berikut.
Layanan CellBroadcastService mendukung decoding SMS CellBroadcast, geofencing untuk peringatan darurat nirkabel (WEA) 3.0, pemeriksaan duplikasi pesan, dan penyiaran pesan ke aplikasi. Layanan ini adalah layanan pesan yang ditargetkan secara geografis dan dibatasi secara geografis dari satu ke banyak yang dirancang untuk mengirimkan pesan ke beberapa pengguna ponsel di area tertentu secara bersamaan. Layanan ini ditentukan oleh komite GSM ETSI, 3GPP, dan merupakan bagian dari standar telekomunikasi.
Aplikasi CellBroadcastReceiver adalah aplikasi sistem default yang menangani peringatan darurat dan non-darurat (seperti peringatan amber dan presiden) 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
yang stabil (tanpa API @hide
) 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 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 dalam aplikasi pesan untuk membuka histori pesan CellBroadcast. Di aplikasi Pesan Android, fitur ini telah diintegrasikan 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 end-to-end. Untuk penerapan referensi AOSP, lihat patch SmsApplication.java
ini.
Luncurkan 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 menunjukkan 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 ke 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#*#* di
papan tombol), aplikasi telepon harus memproses kode telepon khusus dalam bentuk
*#*#code#*#* dan menangani kode menggunakan metode publik
sendDialerSpecialCode
.
Persyaratan info wilayah: Channel 50
Channel 50 adalah channel khusus bagi operator untuk menyiarkan informasi terkait area (kecuali MTN di Afrika Selatan). Untuk channel 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 ZIP).
Implementasi Android CellBroadcastService memberikan dukungan untuk API berikut dalam layanan siaran sel untuk aplikasi Setelan dan SysUI guna mendapatkan informasi Channel 50 siaran. Untuk menerapkannya, lakukan hal berikut:
Daftarkan siaran
android.telephony.action.AREA_INFO_UPDATED
dan ganti nama paket penerimaconfig_area_info_receiver_packages
melalui RRO.Ikatkan ke
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Karena aplikasi Setelan dan SysUI berada di luar cakupan modul CellBroadcast, Anda harus menerapkan perubahan di aplikasi SystemUI atau Setelan untuk memberikan dukungan menyeluruh. Untuk implementasi referensi, lihat aplikasi Setelan CellBroadcastService.
Penyesuaian
Anda tidak dapat mengubah kode sumber modul CellBroadcast secara langsung, tetapi Anda
dapat menggunakan overlay resource runtime
(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 mengetahui daftar konfigurasi yang dapat di-overlay, lihat
overlayable.xml
.Untuk contoh implementasi, lihat
RROSampleTestApp
di AOSP.
Jika penerapan tidak memiliki resource terjemahan string UI atau jika
terjemahan tidak sesuai dengan harapan Anda, Anda dapat mengganti resource
terjemahan menggunakan RRO atau bekerja sama dengan tim terjemahan Google untuk mengirimkan
terjemahan string ke modul CellBroadcast. Jika Anda mengganti resource terjemahan, Google harus mengekspos string tersebut di overlayable.xml
agar dapat diganti. 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-nya 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 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 adalah APK tanpa antarmuka yang hanya menampilkan konten databasenya dan
SharedPreferences
melalui objekContentProvider
dengan otoritascellbroadcast-legacy
, dan tidak dapat diakses oleh aplikasi pihak ketiga.APK dikembangkan dan dimiliki oleh OEM, yang dapat terus menghosting skema API tersembunyi mereka.
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. Menerima 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.
Pemberitahuan pengujian dikelompokkan di bagian Pemberitahuan 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 aplikasi telepon.
Kontak
Untuk mengetahui detail atau pertanyaan lebih lanjut tentang modul CellBroadcast, hubungi grup dukungan CellBroadcast.