Modul CellBroadcast mengurangi upaya berulang untuk OEM (yang pada gilirannya mengurangi fragmentasi di seluruh ekosistem Android dan memberikan kepada pengguna akhir) dan membantu menyederhanakan pengujian operator dan 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, pembatasan wilayah untuk peringatan darurat nirkabel (WEA) 3.0, pemeriksaan duplikasi pesan, dan menyiarkan pesan ke aplikasi. Penargetan yang dioptimalkan adalah {i>one-to-many<i} layanan pesan dengan pembatasan wilayah yang didesain untuk mengirim pesan ke beberapa perangkat pengguna telepon, di area tertentu, pada waktu yang sama. Layanan ditentukan oleh komite GSM ETSI, 3GPP, dan merupakan bagian dari standar telekomunikasi.
Aplikasi CellBroadcastReceiver adalah aplikasi sistem default yang menangani peringatan darurat dan ketidakadaan (seperti peringatan amber dan presiden) serta menyajikan informasi kepada pengguna akhir berdasarkan operator dan regional peraturan.
Alur pesan CellBroadcast
Gambar berikut menunjukkan alur pesan CellBroadcast.
Gambar 1. Alur pesan CellBroadcastReceiver
Lapisan antarmuka radio (RIL) memberi tahu
InBoundSMSHandler
tentang jaringan CDMA/GSM SMS CellBroadcast.Kerangka kerja ini meneruskan SMS CellBroadcast ke modul CBS untuk mengurai dan memproses pesan masuk.
Setelah pesan diproses, CellBroadcastService meneruskan intent ke aplikasi CellBroadcastReceiver default sistem.
Aplikasi CellBroadcastReceiver menampilkan pesan kepada pengguna.
Format modul
CellBroadcastService dan aplikasi CellBroadcastReceiver disertakan dalam
file APEX tunggal
(com.android.cellbroadcast
), yang tersedia untuk perangkat yang menjalankan
Android 11 atau yang lebih baru. Modul ini berisi 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
(tanpa @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 platform
tanda tangan, yang berarti modul
kehilangan akses ke izin tanda tangan.
Sebagai gantinya, Android 11 mendefinisikan tanda tangan baru
izin com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
di dalam modul CellBroadcast; hanya paket dalam modul yang
dapat memperoleh
izin akses karena mereka ditandatangani
dengan kunci yang sama. Izin ini memungkinkan
Aplikasi CellBroadcastReceiver agar memiliki akses penuh ke database di dalam
{i>CellBroadcastService<i}.
Platform memberikan runtime android.permission.READ_CELL_BROADCASTS
izin akses ke aplikasi SMS sistem default untuk mengakses riwayat keadaan darurat
pemberitahuan.
Mengintegrasikan modul CellBroadcast
Bagian ini menjelaskan cara mengintegrasikan modul CellBroadcast.
Mengintegrasikan dengan Setelan
Anda dapat menentukan tempat mengintegrasikan setelan CellBroadcast di aplikasi Setelan
(pengguna akhir mengakses halaman setelan CellBroadcast dari Settings >
Aplikasi & Notifikasi > Lanjutan > Peringatan darurat). Untuk meluncurkan
aplikasi CellBroadcastReceiver dari aplikasi Settings, ubah hal berikut
mengatur konfigurasi dengan nama paket
com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Melakukan integrasi dengan aplikasi pesan
Anda dapat mengintegrasikan link aplikasi ke dalam aplikasi pesan untuk membuka CellBroadcast
histori pesan. Di aplikasi Perpesanan Android, ini telah diintegrasikan ke dalam
Setelan > Lanjutan > Notifikasi darurat. Untuk mengintegrasikan {i>link<i} ke dalam
aplikasi pesan Anda sendiri, tentukan jalur dalam 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 penayangan 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 {i>CellBroadcast<i},
Anda harus memberikan izin AppOpsManager.OP_WRITE_SMS
ke CellBroadcast
untuk menyediakan dukungan end-to-end. Untuk implementasi referensi AOSP,
lihat SmsApplication.java
ini
patch.
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 menunjukkan menu setelan aplikasi CellBroadcastReceiver.
Gambar 2. Menu setelan aplikasi CellBroadcastReceiver
Gambar 3. Layar histori peringatan darurat
Menambahkan ikon peluncuran
Anda dapat mengaktifkan akses histori pesan CellBroadcast dari peluncur aplikasi dan melalui ikon peluncuran 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 mendengarkan kode telepon khusus dalam bentuk
*#*#code#*#* dan tangani kode menggunakan metode publik
sendDialerSpecialCode
.
Persyaratan info area: Channel 50
Channel 50 adalah saluran khusus bagi operator untuk menyiarkan terkait area (kecuali untuk MTN di Afrika Selatan). Untuk saluran ini, siarkan pesan tidak menghasilkan dialog atau notifikasi. Sebagai gantinya, siarkan pesan yang muncul di status SIM menu Setelan, atau di bilah status (untuk misalnya, menampilkan kode pos).
Implementasi Android CellBroadcastService memberikan dukungan untuk API berikut di layanan siaran seluler untuk aplikasi Setelan dan SysUI agar mendapatkan informasi {i> channel<i} siaran 50. Untuk menerapkannya, lakukan hal berikut:
Mendaftarkan
android.telephony.action.AREA_INFO_UPDATED
siaran dan mengganti 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 CellBroadcast Anda harus menerapkan perubahan di SystemUI atau aplikasi Setelan untuk menyediakan dukungan end-to-end. Untuk implementasi referensi, lihat Setelan CellBroadcastService aplikasi.
Penyesuaian
Anda tidak dapat secara langsung memodifikasi kode sumber
dari modul CellBroadcast, tetapi Anda
dapat menggunakan overlay resource runtime
(RRO) ke
aktifkan (atau nonaktifkan) 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
dalam AOSP.
Jika implementasi tersebut tidak memiliki resource terjemahan string UI atau jika
terjemahannya tidak sesuai harapan, Anda dapat mengganti terjemahan
menggunakan RRO atau bekerja sama dengan tim penerjemahan Google ke
terjemahan string ke modul CellBroadcast. Jika Anda mengganti terjemahan
resource, Google harus mengekspos string tersebut dalam overlayable.xml
agar
penggantian. Jika Anda memerlukan konfigurasi lainnya untuk penyesuaian UI, hubungi
grup dukungan CellBroadcast.
Migrasikan data
Android 11 menyertakan aplikasi CellBroadcast lama, yang adalah mekanisme untuk mempertahankan dan memigrasikan data aplikasi (termasuk setelan pengguna dan histori peringatan darurat) untuk perangkat yang diupgrade ke modul CellBroadcast. Implementasi Android yang menggunakan modul CellBroadcast harus menyertakan aplikasi CellBroadcast lama dalam build-nya untuk migrasi data. Jika menggunakan solusi CellBroadcast khusus, Anda harus mendefinisikan CellBroadcastContentProvider APK untuk menyimpan data (Anda dapat menghapus APK siaran sel lama dalam rilis berikutnya).
Pada perangkat yang diupgrade untuk menggunakan modul CellBroadcast, modul tersebut mengambil data
dari menu AOSP LegacyCellBroadcastApp
APK CellBroadcastContentProvider yang ditentukan OEM melalui
Otoritas cellbroadcast-legacy
.
Menggunakan APK CellBroadcastContentProvider yang ditentukan OEM
Saat menentukan APK CellBroadcastContentProvider, APK harus mengikuti spesifikasi produk.
APK adalah APK headless yang hanya menampilkan konten database-nya dan
SharedPreferences
melaluiContentProvider
dengan otoritascellbroadcast-legacy
, dan tidak dapat diakses ke 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
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 CellBroadcast ruang lingkup modul ini. Data berasal dari
SharedPreferences
untukContentProvider.call
.
Untuk memigrasikan histori pesan ke modul CellBroadcast, metode
APK CellBroadcastContentProvider harus mendukung
ContentProvider.query
dengan parameter berikut:
- Otoritas:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Kolom kueri menampilkan daftar properti pesan yang didukung untuk modul CellBroadcast. Mengambil data (dari database Anda) untuk metodeContentProvider.query
.
Untuk implementasi referensi untuk CellBroadcastContentProvider,
, lihat
LegacyCellBroadcastContentProvider
.
Pengujian
Compatibility Test Suite (CTS) Android 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, maka perangkat Anda dapat mendukung mode debug dengan fitur berikut.
Notifikasi pengujian dikelompokkan dalam Notifikasi Lainnya dengan tombol aktif/nonaktif.
Histori mencakup semua pesan yang diterima tetapi tidak ditampilkan, seperti duplikasi atau pesan dalam bahasa lain.
Pesan menampilkan semua parameter yang tersedia, termasuk nomor seri, pesan ID, 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.