Modul CellBroadcast mengurangi upaya berulang untuk OEM (yang pada gilirannya mengurangi fragmentasi di seluruh ekosistem Android dan memberikan perilaku yang konsisten kepada pengguna akhir) dan membantu merampingkan pengujian dan sertifikasi operator untuk persyaratan terkait CellBroadcast (karena kode tidak dapat dimodifikasi oleh OEM ). Modul ini dapat diperbarui, artinya dapat menerima pembaruan untuk fungsionalitas di luar siklus rilis Android normal.
Format paket
Modul CellBroadcast terdiri dari layanan dan aplikasi berikut.
Layanan CellBroadcastService mendukung dekode SMS CellBroadcast, geofencing untuk peringatan darurat nirkabel (WEA) 3.0, pemeriksaan duplikasi pesan, dan menyiarkan pesan ke aplikasi. Ini adalah layanan pesan satu-ke-banyak dengan penargetan geografis dan pembatasan wilayah yang dirancang untuk mengirimkan pesan ke beberapa pengguna ponsel, di area yang ditentukan, pada saat yang 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 kuning dan presiden) dan menyajikan informasi kepada pengguna akhir berdasarkan peraturan operator dan regional.
Aliran pesan CellBroadcast
Gambar berikut menunjukkan aliran pesan CellBroadcast.
Gambar 1. Aliran 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 maksud ke aplikasi CellBroadcastReceiver default sistem.
Aplikasi CellBroadcastReceiver menampilkan pesan kepada pengguna.
Format modul
CellBroadcastService dan aplikasi CellBroadcastReceiver disertakan dalam satu file APEX ( com.google.android.cellbroadcast
), yang tersedia untuk perangkat yang menjalankan Android 11 atau lebih tinggi. Modul ini menyertakan kode dalam package/app/CellBroadcastReceiver
dan memigrasikan kelas kerangka kerja yang ada ke packages/modules/CellBroadcastService
.
Ketergantungan modul
Modul CellBroadcast berinteraksi dengan kerangka kerja hanya menggunakan @SystemApi
yang stabil (tanpa @hide
API) dan bergantung pada pustaka 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 runtime resource overlays (RROs) .
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 mendefinisikan 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 waktu proses android.permission.READ_CELL_BROADCASTS
ke aplikasi SMS sistem default untuk mengakses riwayat peringatan darurat.
Mengintegrasikan modul CellBroadcast
Bagian ini menjelaskan cara mengintegrasikan modul CellBroadcast.
Mengintegrasikan dengan Pengaturan
Anda dapat memutuskan tempat untuk mengintegrasikan pengaturan CellBroadcast di aplikasi Pengaturan (pengguna akhir mengakses halaman pengaturan CellBroadcast dari Pengaturan > Aplikasi & Pemberitahuan > Lanjutan > Peringatan darurat ). Untuk meluncurkan aplikasi CellBroadcastReceiver dari aplikasi Pengaturan, ubah konfigurasi pengaturan berikut dengan nama paket com.google.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.google.android.cellbroadcastreceiver</string>
Mengintegrasikan dengan aplikasi perpesanan
Anda dapat mengintegrasikan tautan aplikasi ke dalam aplikasi perpesanan untuk membuka riwayat pesan CellBroadcast. Di aplikasi Android Messaging, ini telah diintegrasikan ke dalam Pengaturan > Lanjutan > Peringatan darurat . Untuk mengintegrasikan tautan di aplikasi perpesanan Anda sendiri, tentukan jalur di aplikasi perpesanan dan konfigurasikan nama komponen untuk modul CellBroadcast sebagai com.google.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Mengintegrasikan dengan kotak masuk SMS
Anda dapat mengaktifkan menampilkan pesan CellBroadcast di aplikasi perpesanan default dengan mengganti konfigurasi berikut menggunakan overlay sumber daya 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 Pengaturan.
Aplikasi (termasuk aplikasi pihak ketiga) seperti aplikasi pesan yang tertaut ke riwayat pesan CellBroadcast.
(Opsional) Ikon peluncuran dari layar beranda Android yang ditambahkan oleh OEM. Untuk detailnya, lihat Menambahkan ikon peluncuran .
Pengaturan aplikasi CellBroadcastReceiver
Tangkapan layar berikut menunjukkan menu pengaturan aplikasi CellBroadcastReceiver.
Gambar 2. Menu pengaturan aplikasi CellBroadcastReceiver
Gambar 3. Layar riwayat peringatan darurat
Menambahkan ikon peluncuran
Anda dapat mengaktifkan akses riwayat pesan CellBroadcast dari peluncur aplikasi dan melalui ikon peluncuran Anda sendiri.
Untuk mengaktifkan pengaksesan riwayat pesan dari peluncur aplikasi, timpa konfigurasi berikut menggunakan RRO.
<item type="bool" name="show_message_history_in_launcher" />
Untuk mengganti ikon default AOSP, timpa 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 papan tombol), aplikasi dialer harus mendengarkan kode dialer khusus berupa *#*# code #*#* dan tangani kode menggunakan metode publik sendDialerSpecialCode
.
Persyaratan info area: Saluran 50
Saluran 50 adalah saluran khusus bagi operator untuk menyiarkan informasi terkait area (kecuali MTN di Afrika Selatan). Untuk saluran ini, pesan siaran tidak menghasilkan dialog atau pemberitahuan munculan. Sebagai gantinya, pesan siaran muncul di status SIM menu Pengaturan, atau di bilah status (misalnya, menampilkan kode pos).
Implementasi Android CellBroadcastService menyediakan dukungan untuk API berikut dalam layanan siaran seluler untuk aplikasi Pengaturan dan SysUI untuk mendapatkan informasi Saluran 50 siaran. Untuk menerapkan ini, lakukan hal berikut:
Daftarkan siaran
android.telephony.action.AREA_INFO_UPDATED
dan ganti nama paket penerimaconfig_area_info_receiver_packages
melalui RRO.Ikat ke
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Karena aplikasi Pengaturan dan SysUI berada di luar cakupan modul CellBroadcast, Anda harus menerapkan perubahan di SystemUI atau aplikasi Pengaturan untuk memberikan dukungan menyeluruh. Untuk implementasi referensi, lihat aplikasi Pengaturan CellBroadcastService .
Menyesuaikan
Anda tidak dapat secara langsung mengubah kode sumber modul CellBroadcast, tetapi Anda dapat menggunakan overlay sumber daya runtime (RRO) untuk mengaktifkan (atau menonaktifkan) parameter (misalnya, Anda dapat menyesuaikan warna pemberitahuan dan dimensi pada dialog). Untuk mengganti nilai default parameter yang digunakan dalam modul CellBroadcast, ubah nama paket target menjadi com.google.android.cellbroadcastreceiver
. Sebagai tambahan:
Untuk daftar konfigurasi overlayable, lihat
overlayable.xml
.Untuk contoh implementasi, lihat
RROSampleTestApp
di AOSP.
Jika implementasi tidak memiliki sumber daya terjemahan string UI atau jika terjemahan tidak memenuhi harapan Anda, Anda dapat mengganti sumber daya terjemahan menggunakan RRO atau bekerja dengan tim terjemahan Google untuk meningkatkan terjemahan string ke modul CellBroadcast. Jika Anda mengganti sumber terjemahan, Google harus mengekspos string tersebut di overlayable.xml
untuk mengizinkan penggantian. Jika Anda memerlukan lebih banyak konfigurasi untuk penyesuaian UI, hubungi grup dukungan CellBroadcast .
Migrasi data
Android 11 menyertakan aplikasi CellBroadcast lama, yang merupakan mekanisme untuk menyimpan dan memigrasikan data aplikasi (termasuk setelan pengguna dan riwayat peringatan darurat) untuk perangkat yang diupgrade ke modul CellBroadcast. Implementasi Android yang menggunakan modul CellBroadcast harus menyertakan aplikasi CellBroadcast lama dalam versinya untuk migrasi data. Jika implementasi Anda menggunakan solusi CellBroadcast kustom, Anda harus menentukan APK CellBroadcastContentProvider untuk mempertahankan data (Anda dapat menghapus APK siaran seluler lama dengan aman di rilis berikutnya).
Pada perangkat yang ditingkatkan versinya untuk menggunakan modul CellBroadcast, modul mengambil data dari AOSP LegacyCellBroadcastApp atau APK CellBroadcastContentProvider yang ditentukan OEM melalui otoritas cellbroadcast-legacy
ditentukan dengan baik.
Menggunakan APK CellBroadcastContentProvider yang ditentukan OEM
Saat menentukan APK CellBroadcastContentProvider, APK harus mengikuti spesifikasi ini.
APK adalah APK tanpa kepala yang hanya menampilkan konten database dan
SharedPreferences
-nya melalui objekContentProvider
dengan otoritascellbroadcast-legacy
, dan tidak dapat diakses oleh aplikasi pihak ketiga.APK dikembangkan dan dimiliki oleh OEM, di mana OEM 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
Argumen :
@SystemAPI CellBroadcast.Preference
Ini adalah daftar kunci preferensi bersama yang didukung untuk modul CellBroadcast. Data berasal dari
SharedPreferences
untuk metodeContentProvider.call
.
Untuk memigrasikan riwayat 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 untuk CellBroadcastContentProvider,
lihat LegacyCellBroadcastContentProvider
.
Pengujian
Android Compatibility Test Suite (CTS) memverifikasi fungsionalitas API sistem yang bergantung pada aplikasi. Anda juga dapat menjalankan pengujian unit tests/testappsp
.
Jika OEM telah mengaktifkan kode rahasia CMAS untuk perangkat, perangkat tersebut dapat mendukung mode debug dengan fitur berikut.
Lansiran pengujian dikelompokkan di bawah Lansiran Lain dengan tombol aktif/nonaktif.
Riwayat 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 kedaluwarsa.
Untuk mengaktifkan mode debug, tekan *#*#CMAS#*#* pada dialer.
Kontak
Untuk detail lebih lanjut atau pertanyaan tentang modul CellBroadcast, hubungi grup dukungan CellBroadcast .