โมดูล CellBroadcast ช่วยลดความพยายามในการทำซ้ำสำหรับ OEM (ซึ่งจะช่วยลดการกระจายตัวในระบบนิเวศของ Android และให้พฤติกรรมที่สอดคล้องกันแก่ผู้ใช้ปลายทาง) และช่วยปรับปรุงการทดสอบและการรับรองของผู้ให้บริการสำหรับข้อกำหนดที่เกี่ยวข้องกับ CellBroadcast (เนื่องจาก OEM ไม่สามารถแก้ไขได้โดยรหัส ). โมดูลนี้สามารถอัปเดตได้ ซึ่งหมายความว่าสามารถรับอัปเดตฟังก์ชันการทำงานนอกรอบการเปิดตัว Android ปกติได้
รูปแบบแพ็คเกจ
โมดูล CellBroadcast ประกอบด้วยบริการและแอพดังต่อไปนี้
บริการ CellBroadcastService รองรับการถอดรหัส CellBroadcast SMS, การกำหนดขอบเขตตำแหน่งทางภูมิศาสตร์สำหรับการแจ้งเตือนเหตุฉุกเฉินแบบไร้สาย (WEA) 3.0, การตรวจสอบข้อความซ้ำซ้อน และการเผยแพร่ข้อความไปยังแอป เป็นบริการส่งข้อความแบบกำหนดเป้าหมายทางภูมิศาสตร์และแบบ Geofence แบบหนึ่งต่อกลุ่มที่ออกแบบมาเพื่อส่งข้อความไปยังผู้ใช้โทรศัพท์มือถือหลายรายในพื้นที่ที่กำหนดในเวลาเดียวกัน บริการนี้กำหนดโดยคณะกรรมการ ETSI GSM, 3GPP และเป็นส่วนหนึ่งของมาตรฐานโทรคมนาคม
แอพ CellBroadcastReceiver เป็นแอพระบบเริ่มต้นที่จัดการการแจ้งเตือนฉุกเฉินและการแจ้งเตือนที่ไม่เกิดเหตุฉุกเฉิน (เช่น การแจ้งเตือนสีเหลืองอำพันและประธานาธิบดี) และนำเสนอข้อมูลแก่ผู้ใช้ตามกฎระเบียบของผู้ให้บริการและภูมิภาค
การไหลของข้อความ CellBroadcast
รูปภาพต่อไปนี้แสดงโฟลว์ข้อความ CellBroadcast
รูปที่ 1 โฟลว์ข้อความ CellBroadcastReceiver
Radio Interface Layer (RIL) แจ้ง
InBoundSMSHandler
เกี่ยวกับ CDMA/GSM CellBroadcast SMSเฟรมเวิร์กส่งต่อ CellBroadcast SMS ไปยังโมดูล CBS เพื่อแยกวิเคราะห์และประมวลผลข้อความขาเข้า
หลังจากประมวลผลข้อความแล้ว CellBroadcastService จะส่งต่อเจตนาไปยังแอป CellBroadcastReceiver เริ่มต้นของระบบ
แอป CellBroadcastReceiver จะแสดงข้อความถึงผู้ใช้
รูปแบบของโมดูล
แอป CellBroadcastService และ CellBroadcastReceiver รวมอยู่ในไฟล์ APEX ไฟล์เดียว ( com.android.cellbroadcast
) ซึ่งพร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Android 11 ขึ้นไป โมดูลประกอบด้วยโค้ดใน package/app/CellBroadcastReceiver
และย้ายคลาสเฟรมเวิร์กที่มีอยู่ไปยัง packages/modules/CellBroadcastService
การพึ่งพาโมดูล
โมดูล CellBroadcast โต้ตอบกับเฟรมเวิร์กโดยใช้ @SystemApi
ที่เสถียรเท่านั้น (ไม่มี @hide
API) และขึ้นอยู่กับไลบรารีแบบคงที่ต่อไปนี้
-
Androidx.legacy_legacy-support-v13
-
Androidx.recyclerview_recyclerview
-
Androidx.preference_preference
-
androidx.legacy_legacy-preference-v14
-
androidx.appcompat_appcompat
คุณสามารถปรับแต่งการกำหนดค่าได้โดยใช้ การซ้อนทับทรัพยากรรันไทม์ (RRO)
การกำหนดค่าสิทธิ์
โมดูล CellBroadcast ได้รับการลงนามด้วยลายเซ็น Google แทนที่จะเป็นลายเซ็นแพลตฟอร์ม ซึ่งหมายความว่าโมดูลจะไม่สามารถเข้าถึงการอนุญาตลายเซ็นได้ แต่ Android 11 จะกำหนดการอนุญาตลายเซ็นใหม่ com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
ภายในโมดูล CellBroadcast เฉพาะแพ็คเกจในโมดูลเท่านั้นที่สามารถขอรับสิทธิ์ได้เนื่องจากเซ็นชื่อด้วยคีย์เดียวกัน การอนุญาตนี้ทำให้แอป CellBroadcastReceiver สามารถเข้าถึงฐานข้อมูลภายใน CellBroadcastService ได้อย่างสมบูรณ์
แพลตฟอร์มดังกล่าวให้สิทธิ์รันไทม์ android.permission.READ_CELL_BROADCASTS
แก่แอป SMS ระบบเริ่มต้นสำหรับการเข้าถึงประวัติการแจ้งเตือนเหตุฉุกเฉิน
การรวมโมดูล CellBroadcast
เนื้อหาในส่วนนี้อธิบายวิธีการรวมโมดูล CellBroadcast
บูรณาการกับการตั้งค่า
คุณสามารถตัดสินใจว่าจะรวมการตั้งค่า CellBroadcast ไว้ที่ใดในแอปการตั้งค่า (ผู้ใช้ปลายทางเข้าถึงหน้าการตั้งค่า CellBroadcast จาก การตั้งค่า > แอปและการแจ้งเตือน > ขั้นสูง > การแจ้งเตือนเหตุฉุกเฉิน ) หากต้องการเปิดแอป CellBroadcastReceiver จากแอปการตั้งค่า ให้เปลี่ยนการกำหนดค่าการตั้งค่าต่อไปนี้ด้วยชื่อแพ็คเกจ com.android.cellbroadcastreceiver
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
บูรณาการกับแอพส่งข้อความ
คุณสามารถรวมลิงค์แอพเข้ากับแอพส่งข้อความเพื่อเปิดประวัติข้อความ CellBroadcast ในแอป Android Messaging สิ่งนี้ได้รวมอยู่ใน การตั้งค่า > ขั้นสูง > การแจ้งเตือนเหตุฉุกเฉิน หากต้องการรวมลิงก์ในแอปส่งข้อความของคุณเอง ให้กำหนดเส้นทางในแอปส่งข้อความและกำหนดค่าชื่อส่วนประกอบสำหรับโมดูล CellBroadcast เป็น com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
บูรณาการกับกล่องจดหมาย SMS
คุณสามารถเปิดใช้งานการแสดงข้อความ CellBroadcast ในแอปส่งข้อความเริ่มต้นได้โดยการแทนที่การกำหนดค่าต่อไปนี้โดยใช้การซ้อนทับทรัพยากรรันไทม์
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
เนื่องจากการอนุญาตอยู่นอกขอบเขตของโมดูล CellBroadcast คุณต้องให้สิทธิ์ AppOpsManager.OP_WRITE_SMS
แก่โมดูล CellBroadcast เพื่อให้การสนับสนุนแบบ end-to-end สำหรับการใช้งานอ้างอิง AOSP โปรดดู แพตช์ SmsApplication.java
นี้
การเปิดตัวแอป CellBroadcastReceiver
แอป CellBroadcastReceiver มีจุดเริ่มต้นดังต่อไปนี้
เมนูแอปการตั้งค่า
แอป (รวมถึงแอปของบุคคลที่สาม) เช่น แอปข้อความที่ลิงก์ไปยังประวัติข้อความ CellBroadcast
(ไม่บังคับ) ไอคอนเปิดตัวจากหน้าจอหลักของ Android ที่เพิ่มโดย OEM สำหรับรายละเอียด โปรดดูที่ การเพิ่มไอคอนเริ่มต้น
การตั้งค่าแอป CellBroadcastReceiver
ภาพหน้าจอต่อไปนี้แสดงเมนูการตั้งค่าแอป CellBroadcastReceiver
รูปที่ 2 เมนูการตั้งค่าแอป CellBroadcastReceiver
รูปที่ 3 หน้าจอประวัติการแจ้งเตือนเหตุฉุกเฉิน
การเพิ่มไอคอนการเปิดตัว
คุณสามารถเปิดใช้งานการเข้าถึงประวัติข้อความ CellBroadcast จากตัวเรียกใช้งานแอปและผ่านไอคอนเปิดใช้งานของคุณเอง
หากต้องการเปิดใช้งานการเข้าถึงประวัติข้อความจากเครื่องเรียกใช้งานแอป ให้แทนที่การกำหนดค่าต่อไปนี้โดยใช้ RRO
<item type="bool" name="show_message_history_in_launcher" />
หากต้องการแทนที่ไอคอนเริ่มต้น AOSP ให้แทนที่การกำหนดค่าต่อไปนี้โดยใช้ RRO
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
การเปิดใช้งานรหัสลับ CMAS
หากต้องการเปิดใช้งานรหัสลับ CMAS *#*#CMAS#*#* ( *#*#2627#*#* บนแป้นกดหมายเลข) แอปแป้นหมุนจะต้องฟังรหัสแป้นหมุนพิเศษในรูปแบบของ *#*# code #*#* และจัดการรหัสโดยใช้วิธีสาธารณะ sendDialerSpecialCode
ข้อกำหนดข้อมูลพื้นที่: ช่อง 50
ช่อง 50 เป็นช่องพิเศษสำหรับผู้ให้บริการในการถ่ายทอดข้อมูลที่เกี่ยวข้องกับพื้นที่ (ยกเว้น MTN ในแอฟริกาใต้) สำหรับช่องนี้ ข้อความที่ออกอากาศจะไม่ส่งผลให้เกิดกล่องโต้ตอบหรือการแจ้งเตือนแบบป๊อปอัป ข้อความบรอดแคสต์จะปรากฏในสถานะ SIM ของเมนูการตั้งค่าหรือในแถบสถานะแทน (เช่น การแสดงรหัสไปรษณีย์)
การใช้งาน Android CellBroadcastService ให้การสนับสนุน API ต่อไปนี้ในบริการออกอากาศทางมือถือสำหรับการตั้งค่าและแอป SysUI เพื่อรับข้อมูลการออกอากาศช่อง 50 หากต้องการใช้สิ่งนี้ ให้ทำดังต่อไปนี้:
ลงทะเบียนการออกอากาศ
android.telephony.action.AREA_INFO_UPDATED
และแทนที่ชื่อแพ็กเกจตัวconfig_area_info_receiver_packages
ผ่าน RROเชื่อมโยงกับ
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
เนื่องจากแอปการตั้งค่าและ SysUI อยู่นอกขอบเขตของโมดูล CellBroadcast คุณต้องใช้การเปลี่ยนแปลงของคุณใน SystemUI หรือแอปการตั้งค่าเพื่อให้การสนับสนุนแบบ end-to-end สำหรับการดำเนินการอ้างอิง โปรดดู แอปการตั้งค่า CellBroadcastService
การปรับแต่ง
คุณไม่สามารถแก้ไขซอร์สโค้ดของโมดูล CellBroadcast ได้โดยตรง แต่คุณสามารถใช้ รันไทม์รีซอร์สโอเวอร์เลย์ (RRO) เพื่อเปิดใช้งาน (หรือปิดใช้งาน) พารามิเตอร์ ได้ (เช่น คุณสามารถปรับแต่งสีของการแจ้งเตือนและขนาดในกล่องโต้ตอบได้) หากต้องการแทนที่ค่าเริ่มต้นของพารามิเตอร์ที่ใช้ในโมดูล CellBroadcast ให้เปลี่ยนชื่อแพ็กเกจเป้าหมายเป็น com.android.cellbroadcastreceiver
นอกจากนี้:
สำหรับรายการการกำหนดค่าแบบซ้อนทับ โปรดดูที่
overlayable.xml
สำหรับตัวอย่างการใช้งาน โปรดดูที่
RROSampleTestApp
ใน AOSP
หากการใช้งานขาดทรัพยากรการแปลสตริง UI หรือหากการแปลไม่เป็นไปตามที่คุณคาดหวัง คุณสามารถแทนที่ทรัพยากรการแปลโดยใช้ RRO หรือทำงานร่วมกับทีมแปลของ Google เพื่อแปลสตริงอัปสตรีมไปยังโมดูล CellBroadcast หากคุณลบล้างทรัพยากรการแปล Google จะต้องเปิดเผยสตริงเหล่านั้นใน overlayable.xml
เพื่ออนุญาตการลบล้าง หากคุณต้องการการกำหนดค่าเพิ่มเติมสำหรับการปรับแต่ง UI โปรดติดต่อ กลุ่มสนับสนุน CellBroadcast
การย้ายข้อมูล
Android 11 มีแอป CellBroadcast รุ่นเก่า ซึ่งเป็นกลไกในการรักษาและย้ายข้อมูลแอป (รวมถึงการตั้งค่าผู้ใช้และประวัติการแจ้งเตือนเหตุฉุกเฉิน) สำหรับอุปกรณ์ที่อัปเกรดเป็นโมดูล CellBroadcast การใช้งาน Android ที่ใช้โมดูล CellBroadcast ควรรวมแอป CellBroadcast เดิมไว้ในรุ่นสำหรับการย้ายข้อมูล หากการใช้งานของคุณใช้โซลูชัน CellBroadcast ที่กำหนดเอง คุณควรกำหนด CellBroadcastContentProvider APK เพื่อรักษาข้อมูล (คุณสามารถลบ APK ของการออกอากาศทางเซลล์แบบเดิมได้อย่างปลอดภัยในรุ่นต่อๆ ไป)
บนอุปกรณ์ที่อัปเกรดเพื่อใช้โมดูล CellBroadcast โมดูลจะดึงข้อมูลจาก AOSP LegacyCellBroadcastApp หรือ APK CellBroadcastContentProvider ที่กำหนดโดย OEM ผ่านทางสิทธิ์ cellbroadcast-legacy
ที่กำหนดไว้อย่างดี
การใช้ CellBroadcastContentProvider APK ที่กำหนดโดย OEM
เมื่อกำหนด CellBroadcastContentProvider APK นั้น APK จะต้องเป็นไปตามข้อกำหนดเหล่านี้
APK เป็น APK ที่ไม่มีส่วนหัว ซึ่งแสดงเฉพาะเนื้อหาของฐานข้อมูลและ
SharedPreferences
ผ่านออบเจ็กต์ContentProvider
ที่มีสิทธิ์cellbroadcast-legacy
และแอปของบุคคลที่สามไม่สามารถเข้าถึงได้APK ได้รับการพัฒนาและเป็นเจ้าของโดย OEM โดยที่ OEM สามารถโฮสต์สคีมา API ที่ซ่อนอยู่ต่อไปได้
หากต้องการย้าย SharedPreferences
ไปยังโมดูล CellBroadcast นั้น CellBroadcastContentProvider APK จะต้องรองรับเมธอด ContentProvider.call
) ด้วยพารามิเตอร์ต่อไปนี้:
- ผู้มีอำนาจ:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- วิธีการ:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
หาเรื่อง:
@SystemAPI CellBroadcast.Preference
นี่คือรายการคีย์การตั้งค่าที่ใช้ร่วมกันที่รองรับสำหรับโมดูล CellBroadcast ข้อมูลมาจาก
SharedPreferences
สำหรับเมธอดContentProvider.call
หากต้องการย้ายประวัติข้อความไปยังโมดูล CellBroadcast นั้น CellBroadcastContentProvider APK จะต้องรองรับเมธอด ContentProvider.query
ด้วยพารามิเตอร์ต่อไปนี้:
- ผู้มีอำนาจ:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
คอลัมน์แบบสอบถามแสดงรายการคุณสมบัติข้อความที่รองรับสำหรับโมดูล CellBroadcast รับข้อมูล (จากฐานข้อมูลของคุณ) สำหรับเมธอดContentProvider.query
สำหรับการดำเนินการอ้างอิงสำหรับ CellBroadcastContentProvider,
โปรดดูที่ LegacyCellBroadcastContentProvider
การทดสอบ
ชุดทดสอบความเข้ากันได้ของ Android (CTS) ตรวจสอบการทำงานของ API ระบบที่ขึ้นอยู่กับแอป คุณยังสามารถรันโมดูล CellBroadcast unit tests/testappsp
ได้
หาก OEM ได้ เปิดใช้งานรหัสลับ CMAS สำหรับอุปกรณ์ อุปกรณ์นั้นสามารถรองรับโหมดแก้ไขจุดบกพร่องด้วยคุณสมบัติต่อไปนี้
การแจ้งเตือนการทดสอบจะถูกจัดกลุ่มภายใต้ การแจ้งเตือนอื่นๆ โดยมีปุ่มเปิด/ปิด
ประวัติประกอบด้วยข้อความทั้งหมดที่ได้รับแต่ไม่แสดง เช่น ข้อความซ้ำหรือข้อความในภาษาอื่น
ข้อความจะแสดงพารามิเตอร์ที่มีอยู่ทั้งหมด รวมถึงหมายเลขซีเรียล รหัสข้อความ และวันหมดอายุ
หากต้องการเปิดใช้งานโหมดแก้ไขข้อบกพร่อง ให้กด *#*#CMAS#*#* บนตัวเรียกเลขหมาย
ติดต่อ
สำหรับรายละเอียดเพิ่มเติมหรือคำถามเกี่ยวกับโมดูล CellBroadcast โปรดติดต่อ กลุ่มสนับสนุน CellBroadcast