{i>CellBroadcast

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.

Alur pesan CellBroadcastReceiver

Gambar 1. Alur pesan CellBroadcastReceiver

  1. Lapisan antarmuka radio (RIL) memberi tahu InBoundSMSHandler tentang SMS CellBroadcast CDMA/GSM.

  2. Framework meneruskan SMS CellBroadcast ke modul CBS untuk mengurai dan memproses pesan yang masuk.

  3. Setelah pesan diproses, CellBroadcastService meneruskan intent ke aplikasi CellBroadcastReceiver default sistem.

  4. 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.

Menu setelan aplikasi CellBroadcastReceiver

Gambar 2. Menu setelan aplikasi CellBroadcastReceiver

Histori peringatan darurat

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 penerima config_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:

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 objek ContentProvider dengan otorisasi cellbroadcast-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 metode ContentProvider.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 metode ContentProvider.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.