โมดูล CellBroadcast ช่วยลดความพยายามที่ต้องทำซ้ำๆ สำหรับ OEM (ซึ่งในทางกลับกัน ช่วยลดการกระจายตัวทั่วทั้งระบบนิเวศของ Android และมอบความสอดคล้องกัน ต่อผู้ใช้ปลายทาง) และช่วยปรับปรุงการทดสอบของผู้ให้บริการ และ เพื่อรับรองข้อกำหนดเกี่ยวกับ CellBroadcast (เนื่องจากไม่สามารถใช้รหัส ซึ่งแก้ไขโดย OEM) โมดูลนี้อัปเดตได้ ซึ่งหมายความว่าจะได้รับอัปเดตสำหรับ ฟังก์ชันที่นอกเหนือจากรอบการเผยแพร่ปกติของ Android
รูปแบบแพ็กเกจ
โมดูล CellBroadcast ประกอบด้วยบริการและแอปต่อไปนี้
บริการ CellBroadcastService รองรับการถอดรหัส CellBroadcast SMS การกำหนดเขตพื้นที่เสมือนสำหรับการแจ้งเตือนเหตุฉุกเฉินแบบไร้สาย (WEA) 3.0, การตรวจสอบข้อความซ้ำ และประกาศข้อความไปยังแอป โดยเป็นการกำหนดเป้าหมายทางภูมิศาสตร์แบบ 1 ต่อหลายรายการ บริการส่งข้อความที่มีเขตพื้นที่เสมือนซึ่งออกแบบมาเพื่อส่งข้อความไปยังอุปกรณ์เคลื่อนที่หลายเครื่อง ผู้ใช้โทรศัพท์ในพื้นที่ที่กำหนดในเวลาเดียวกัน บริการจะกำหนดโดย คณะกรรมการ GSM ETSI 3GPP และเป็นส่วนหนึ่งของ มาตรฐานการสื่อสารโทรคมนาคม
แอป CellBroadcastReceiver เป็นแอประบบเริ่มต้นที่จัดการ การแจ้งเตือนเหตุฉุกเฉินและเหตุฉุกเฉิน (เช่น การแจ้งเตือนระดับ Amber และเมื่อประธานาธิบดี) และ แสดงข้อมูลแก่ผู้ใช้ปลายทางโดยอิงตามผู้ให้บริการและภูมิภาค กฎระเบียบต่างๆ
โฟลว์ข้อความ CellBroadcast
รูปต่อไปนี้แสดงการรับส่งข้อความ CellBroadcast
รูปที่ 1 ขั้นตอนข้อความ CellBroadcastReceiver
เลเยอร์อินเทอร์เฟซวิทยุ (RIL) แจ้ง
InBoundSMSHandler
เกี่ยวกับ CDMA/GSM SMS จาก CellBroadcastเฟรมเวิร์กส่งต่อ SMS CellBroadcast SMS ไปยังโมดูล CBS เพื่อแยกวิเคราะห์และ ประมวลผลข้อความขาเข้า
หลังจากประมวลผลข้อความแล้ว CellBroadcastService จะส่งต่อ Intent แอป CellBroadcastReceiver เริ่มต้นของระบบ
แอป CellBroadcastReceiver จะแสดงข้อความไปยังผู้ใช้
รูปแบบโมดูล
แอป CellBroadcastService และ CellBroadcastReceiver รวมอยู่ใน
ไฟล์ APEX ไฟล์เดียว
(com.android.cellbroadcast
) ซึ่งใช้ได้สำหรับอุปกรณ์ที่ใช้
Android 11 ขึ้นไป โมดูลนี้มีโค้ดใน
package/app/CellBroadcastReceiver
และย้ายคลาสของเฟรมเวิร์กที่มีอยู่ไปยัง
packages/modules/CellBroadcastService
ทรัพยากร Dependency ของโมดูล
โมดูล CellBroadcast จะโต้ตอบกับเฟรมเวิร์กโดยใช้เวอร์ชันเสถียรเท่านั้น
@SystemApi
(ไม่มี API @hide
) และขึ้นอยู่กับไลบรารีแบบคงที่ต่อไปนี้
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 เราได้ผสานรวมเข้ากับ
การตั้งค่า > ขั้นสูง > การแจ้งเตือนฉุกเฉิน วิธีผสานรวมลิงก์ใน
แอปรับส่งข้อความของคุณเอง กำหนดเส้นทางในแอปรับส่งข้อความและกำหนดค่า
ชื่อคอมโพเนนต์สำหรับโมดูล 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
เพื่อให้การสนับสนุนแบบครบวงจร สำหรับการใช้การอ้างอิง 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 ในแอฟริกาใต้) สำหรับช่องนี้ ให้ประกาศ ข้อความจะไม่แสดงผลในกล่องโต้ตอบหรือการแจ้งเตือน แต่ให้ประกาศ ข้อความจะปรากฏในสถานะซิมของเมนูการตั้งค่าหรือในแถบสถานะ (สำหรับ เช่น แสดงรหัสไปรษณีย์)
การใช้งาน CellBroadcastService บน Android ให้การสนับสนุนสำหรับ API ต่อไปนี้ในบริการการส่งข้อมูลเตือนภัยทางมือถือ (CB) สำหรับการตั้งค่าและแอป SysUI เพื่อ รับข้อมูลการออกอากาศของช่อง 50 หากต้องการดำเนินการดังกล่าว ให้ทำตามขั้นตอนต่อไปนี้
ลงทะเบียนการออกอากาศ
android.telephony.action.AREA_INFO_UPDATED
และลบล้าง ชื่อแพ็กเกจของผู้รับconfig_area_info_receiver_packages
ผ่าน RROเชื่อมโยงกับ
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
เนื่องจากแอปการตั้งค่าและแอป SysUI อยู่นอกขอบเขตของ CellBroadcast คุณต้องนำการเปลี่ยนแปลงไปใช้ใน SystemUI หรือแอปการตั้งค่าเพื่อ ให้การสนับสนุนแบบครบวงจร สำหรับการใช้งานข้อมูลอ้างอิง โปรดดู การตั้งค่า 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 การส่งข้อมูลเตือนภัยทางมือถือ (CB) เดิมในรุ่นต่อมา)
ในอุปกรณ์ที่อัปเกรดเพื่อใช้โมดูล CellBroadcast โมดูลจะดึงข้อมูล
จาก AOSP LegacyCellBroadcastApp หรือ
APK ของ CellBroadcastContentProvider ที่ OEM กำหนดผ่าน
หน่วยงาน cellbroadcast-legacy
ใช้ APK CellBroadcastContentProvider ที่ OEM กำหนด
เมื่อกำหนด APK CellBroadcastContentProvider APK ต้องเป็นไปตามข้อกำหนดต่อไปนี้
APK เป็น APK แบบไม่มีส่วนหัวที่แสดงเฉพาะเนื้อหาของฐานข้อมูล และ
SharedPreferences
ผ่านContentProvider
วัตถุที่มีหน่วยงานcellbroadcast-legacy
และไม่สามารถเข้าถึงได้ ไปยังแอปของบุคคลที่สามได้APK ได้รับการพัฒนาและเป็นของ OEM โดยที่ OEM จะดำเนินการ โฮสต์สคีมา API ที่ซ่อนอยู่
หากต้องการย้ายข้อมูล SharedPreferences
ไปยังโมดูล CellBroadcast ฟิลด์
APK CellBroadcastContentProvider ต้องรองรับฟังก์ชัน
ContentProvider.call
)
ด้วยพารามิเตอร์ต่อไปนี้
- หน่วยงาน:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- วิธีการ:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
อาร์กิวเมนต์:
@SystemAPI CellBroadcast.Preference
นี่คือรายการคีย์ค่ากำหนดที่ใช้ร่วมกันที่รองรับสำหรับ CellBroadcast ข้อมูลมาจาก
SharedPreferences
สำหรับContentProvider.call
หากต้องการย้ายข้อมูลประวัติข้อความไปยังโมดูล CellBroadcast ฟังก์ชันต่อไปนี้
APK CellBroadcastContentProvider ต้องรองรับฟังก์ชัน
ContentProvider.query
ที่มีพารามิเตอร์ต่อไปนี้
- อำนาจหน้าที่:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
คอลัมน์การค้นหา แสดงรายการพร็อพเพอร์ตี้ข้อความที่รองรับสำหรับโมดูล CellBroadcast รับข้อมูล (จากฐานข้อมูลของคุณ) สำหรับเมธอดContentProvider.query
สำหรับการติดตั้งใช้งานข้อมูลอ้างอิงสำหรับ CellBroadcastContentProvider,
โปรดอ้างอิง
LegacyCellBroadcastContentProvider
การทดสอบ
ชุดทดสอบความเข้ากันได้ของ Android (CTS) จะตรวจสอบฟังก์ชันการทำงานของ
API ระบบที่ขึ้นอยู่กับแอป คุณยังเรียกใช้โมดูล CellBroadcast ได้ด้วย
unit tests/testappsp
หาก OEM เปิดใช้รหัสลับ CMAS สำหรับอุปกรณ์ อุปกรณ์สามารถรองรับโหมดแก้ไขข้อบกพร่องด้วยฟีเจอร์ต่อไปนี้
การแจ้งเตือนการทดสอบจะจัดกลุ่มอยู่ในส่วนการแจ้งเตือนอื่นๆ โดยมีการสลับเปิด/ปิด
ประวัติจะรวมข้อความทั้งหมดที่ได้รับแต่ไม่ได้แสดง เช่น ข้อความซ้ำหรือข้อความที่เป็นภาษาอื่น
ข้อความแสดงพารามิเตอร์ที่ใช้ได้ทั้งหมด รวมถึงหมายเลขซีเรียล ข้อความ รหัส และวันที่หมดอายุ
หากต้องการเปิดใช้โหมดแก้ไขข้อบกพร่อง ให้กด *#*#CMAS#*#* ในแป้นโทรศัพท์
รายชื่อติดต่อ
สำหรับรายละเอียดเพิ่มเติมหรือข้อสงสัยเกี่ยวกับโมดูล CellBroadcast โปรดติดต่อ กลุ่มการสนับสนุนของ CellBroadcast