Mô-đun CellBroadcast giúp giảm bớt những nỗ lực lặp đi lặp lại cho các OEM (nhờ đó giảm sự phân mảnh trong hệ sinh thái Android và mang lại hành vi nhất quán cho người dùng cuối) đồng thời giúp đơn giản hoá quy trình kiểm thử và chứng nhận của nhà mạng đối với các yêu cầu liên quan đến CellBroadcast (vì các OEM không thể sửa đổi mã). Mô-đun này có thể cập nhật, tức là có thể nhận các bản cập nhật về chức năng ngoài chu kỳ phát hành Android thông thường.
Định dạng gói
Mô-đun CellBroadcast bao gồm dịch vụ và ứng dụng sau.
Dịch vụ CellBroadcastService hỗ trợ việc giải mã tin nhắn SMS truyền phát trên di động, hàng rào địa lý cho cảnh báo khẩn cấp không dây (WEA) 3.0, kiểm tra trùng lặp tin nhắn và truyền phát tin nhắn đến các ứng dụng. Đây là một dịch vụ nhắn tin một-nhiều, nhắm mục tiêu theo vị trí địa lý và có hàng rào địa lý. Dịch vụ này được thiết kế để gửi tin nhắn đến nhiều người dùng điện thoại di động trong một khu vực xác định cùng một lúc. Dịch vụ này được xác định bởi uỷ ban GSM của ETSI, 3GPP và là một phần của các tiêu chuẩn viễn thông.
Ứng dụng CellBroadcastReceiver là một ứng dụng hệ thống mặc định, xử lý các cảnh báo khẩn cấp và không khẩn cấp (chẳng hạn như cảnh báo màu hổ phách và cảnh báo của tổng thống) và trình bày thông tin cho người dùng cuối dựa trên các quy định của nhà mạng và khu vực.
Luồng tin nhắn CellBroadcast
Hình sau đây cho thấy quy trình truyền thông báo CellBroadcast.
Hình 1. Luồng thông báo CellBroadcastReceiver
Lớp giao diện vô tuyến (RIL) sẽ thông báo cho
InBoundSMSHandler
về SMS CellBroadcast CDMA/GSM.Khung này chuyển tiếp SMS CellBroadcast đến mô-đun CBS để phân tích cú pháp và xử lý tin nhắn đến.
Sau khi thông báo được xử lý, CellBroadcastService sẽ chuyển tiếp ý định đến ứng dụng CellBroadcastReceiver mặc định của hệ thống.
Ứng dụng CellBroadcastReceiver hiển thị thông báo cho người dùng.
Định dạng mô-đun
Ứng dụng CellBroadcastService và CellBroadcastReceiver có trong một tệp APEX duy nhất (com.android.cellbroadcast
), có sẵn cho các thiết bị chạy Android 11 trở lên. Mô-đun này bao gồm mã trong package/app/CellBroadcastReceiver
và di chuyển các lớp khung hiện có sang packages/modules/CellBroadcastService
.
Phần phụ thuộc của mô-đun
Mô-đun CellBroadcast chỉ tương tác với khung bằng @SystemApi
ổn định (không có API @hide
) và phụ thuộc vào các thư viện tĩnh sau.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Bạn có thể tuỳ chỉnh cấu hình bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RRO).
Cấu hình quyền
Mô-đun CellBroadcast được ký bằng chữ ký của Google thay vì chữ ký của nền tảng, tức là mô-đun này sẽ mất quyền truy cập vào các quyền chữ ký.
Thay vào đó, Android 11 xác định quyền chữ ký mới com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
trong mô-đun CellBroadcast; chỉ những gói trong mô-đun mới có thể có được quyền này vì chúng được ký bằng cùng một khoá. Quyền này cho phép ứng dụng CellBroadcastReceiver có toàn quyền truy cập vào cơ sở dữ liệu bên trong CellBroadcastService.
Nền tảng này cấp quyền trong thời gian chạy android.permission.READ_CELL_BROADCASTS
cho ứng dụng SMS mặc định của hệ thống để truy cập vào nhật ký cảnh báo khẩn cấp.
Tích hợp mô-đun CellBroadcast
Phần này mô tả cách tích hợp mô-đun CellBroadcast.
Tích hợp với phần Cài đặt
Bạn có thể quyết định vị trí tích hợp chế độ cài đặt CellBroadcast trong ứng dụng Cài đặt (người dùng cuối truy cập vào trang cài đặt CellBroadcast từ Cài đặt > Ứng dụng và thông báo > Nâng cao > Cảnh báo khẩn cấp). Để chạy ứng dụng CellBroadcastReceiver từ ứng dụng Cài đặt, hãy thay đổi các cấu hình cài đặt sau bằng tên gói com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Tích hợp với ứng dụng nhắn tin
Bạn có thể tích hợp một đường liên kết đến ứng dụng vào các ứng dụng nhắn tin để mở nhật ký tin nhắn CellBroadcast. Trong ứng dụng Nhắn tin của Android, chế độ này đã được tích hợp vào phần Cài đặt > Nâng cao > Thông báo khẩn cấp. Để tích hợp một đường liên kết trong ứng dụng nhắn tin của riêng bạn, hãy xác định đường dẫn trong ứng dụng nhắn tin và định cấu hình tên thành phần cho mô-đun CellBroadcast dưới dạng com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Tích hợp với hộp thư đến SMS
Bạn có thể bật chế độ hiển thị thông báo CellBroadcast trong ứng dụng nhắn tin mặc định bằng cách ghi đè cấu hình sau bằng lớp phủ tài nguyên thời gian chạy.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Vì việc cấp quyền nằm ngoài phạm vi của mô-đun CellBroadcast, nên bạn phải cấp quyền AppOpsManager.OP_WRITE_SMS
cho mô-đun CellBroadcast để cung cấp dịch vụ hỗ trợ toàn diện. Để biết thông tin về cách triển khai tham chiếu AOSP, hãy tham khảo bản vá SmsApplication.java
này.
Chạy ứng dụng CellBroadcastReceiver
Ứng dụng CellBroadcastReceiver có các điểm khởi chạy sau.
Trình đơn của ứng dụng Cài đặt.
Một ứng dụng (kể cả ứng dụng bên thứ ba), chẳng hạn như ứng dụng nhắn tin, liên kết đến nhật ký tin nhắn CellBroadcast.
(Không bắt buộc) Biểu tượng khởi chạy do OEM thêm vào màn hình chính Android. Để biết thông tin chi tiết, hãy xem phần Thêm biểu tượng khởi chạy.
Chế độ cài đặt ứng dụng CellBroadcastReceiver
Ảnh chụp màn hình sau đây cho thấy trình đơn cài đặt ứng dụng CellBroadcastReceiver.
Hình 2. Trình đơn cài đặt ứng dụng CellBroadcastReceiver
Hình 3. Màn hình nhật ký cảnh báo khẩn cấp
Thêm biểu tượng mở
Bạn có thể cho phép truy cập vào nhật ký tin nhắn CellBroadcast từ trình chạy ứng dụng và thông qua các biểu tượng khởi chạy của riêng bạn.
Để cho phép truy cập vào nhật ký tin nhắn từ trình chạy ứng dụng, hãy ghi đè cấu hình sau bằng RRO.
<item type="bool" name="show_message_history_in_launcher" />
Để ghi đè biểu tượng mặc định của AOSP, hãy ghi đè cấu hình sau bằng RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Bật mã bí mật CMAS
Để bật mã bí mật CMAS, *#*#CMAS#*#* (*#*#2627#*#* trên bàn phím quay số), ứng dụng trình quay số phải theo dõi mã trình quay số đặc biệt ở dạng *#*#code#*#* và xử lý mã bằng phương thức công khai sendDialerSpecialCode
.
Yêu cầu về thông tin khu vực: Kênh 50
Kênh 50 là một kênh đặc biệt dành cho các nhà mạng phát sóng thông tin liên quan đến khu vực (ngoại trừ MTN ở Nam Phi). Đối với kênh này, thông báo phát sóng sẽ không tạo ra hộp thoại hoặc thông báo. Thay vào đó, thông báo truyền tin sẽ xuất hiện trong phần Trạng thái SIM của trình đơn Cài đặt hoặc trong thanh trạng thái (ví dụ: hiển thị mã bưu chính).
Việc triển khai CellBroadcastService trên Android hỗ trợ các API sau đây trong dịch vụ truyền tin quảng bá cho các ứng dụng Cài đặt và SysUI để nhận thông tin về kênh truyền tin quảng bá 50. Để triển khai việc này, hãy làm như sau:
Đăng ký broadcast
android.telephony.action.AREA_INFO_UPDATED
và ghi đè tên gói receiverconfig_area_info_receiver_packages
thông qua RRO.Liên kết với
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Vì ứng dụng Cài đặt và SysUI nằm ngoài phạm vi của mô-đun CellBroadcast, nên bạn phải triển khai các thay đổi trong SystemUI hoặc ứng dụng Cài đặt để cung cấp hỗ trợ toàn diện. Để biết thông tin về cách triển khai tham chiếu, hãy tham khảo ứng dụng Cài đặt CellBroadcastService.
Tuỳ chỉnh
Bạn không thể sửa đổi trực tiếp mã nguồn của mô-đun CellBroadcast, nhưng bạn có thể sử dụng lớp phủ tài nguyên thời gian chạy (RRO) để bật (hoặc tắt) các tham số (ví dụ: bạn có thể tuỳ chỉnh màu sắc của thông báo và kích thước trên hộp thoại). Để ghi đè các giá trị mặc định của các tham số được dùng trong mô-đun CellBroadcast, hãy thay đổi tên gói mục tiêu thành com.android.cellbroadcastreceiver
. Ngoài ra:
Để biết danh sách các cấu hình có thể phủ lên, hãy tham khảo
overlayable.xml
.Để xem ví dụ về cách triển khai, hãy tham khảo
RROSampleTestApp
trong AOSP.
Nếu quá trình triển khai thiếu tài nguyên bản dịch chuỗi giao diện người dùng hoặc nếu bản dịch không đáp ứng mong đợi của bạn, bạn có thể ghi đè tài nguyên bản dịch bằng RRO hoặc làm việc với nhóm dịch của Google để chuyển bản dịch chuỗi lên mô-đun CellBroadcast. Nếu bạn ghi đè các tài nguyên dịch, Google phải hiển thị những chuỗi đó trong overlayable.xml
để cho phép ghi đè. Nếu bạn cần thêm cấu hình để tuỳ chỉnh giao diện người dùng, hãy liên hệ với nhóm hỗ trợ CellBroadcast.
Di chuyển dữ liệu
Android 11 có một ứng dụng CellBroadcast cũ, đây là một cơ chế để duy trì và di chuyển dữ liệu ứng dụng (bao gồm cả chế độ cài đặt người dùng và nhật ký cảnh báo khẩn cấp) cho các thiết bị nâng cấp lên mô-đun CellBroadcast. Các hoạt động triển khai Android sử dụng mô-đun CellBroadcast phải bao gồm ứng dụng CellBroadcast cũ trong bản dựng để di chuyển dữ liệu. Nếu quá trình triển khai của bạn sử dụng giải pháp CellBroadcast tuỳ chỉnh, bạn nên xác định một tệp APK CellBroadcastContentProvider để lưu giữ dữ liệu (bạn có thể xoá tệp APK truyền tin nhắn qua mạng di động cũ một cách an toàn trong bản phát hành tiếp theo).
Trên các thiết bị được nâng cấp để sử dụng mô-đun CellBroadcast, mô-đun này sẽ tìm nạp dữ liệu từ AOSP LegacyCellBroadcastApp hoặc CellBroadcastContentProvider APK do OEM xác định thông qua quyền cellbroadcast-legacy
được xác định rõ.
Sử dụng APK CellBroadcastContentProvider do OEM xác định
Khi xác định một APK CellBroadcastContentProvider, APK đó phải tuân thủ các quy cách sau.
APK này là một APK không có giao diện người dùng, chỉ hiển thị nội dung của cơ sở dữ liệu và
SharedPreferences
thông qua một đối tượngContentProvider
có quyềncellbroadcast-legacy
và không thể truy cập vào các ứng dụng bên thứ ba.APK này do OEM phát triển và sở hữu, trong đó OEM có thể tiếp tục lưu trữ giản đồ API ẩn của họ.
Để di chuyển SharedPreferences
sang mô-đun CellBroadcast, APK CellBroadcastContentProvider phải hỗ trợ phương thức ContentProvider.call
) với các tham số sau:
- Cơ quan có thẩm quyền:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Phương thức:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Đây là danh sách các khoá lựa chọn ưu tiên dùng chung được hỗ trợ cho mô-đun CellBroadcast. Dữ liệu được lấy từ
SharedPreferences
cho phương thứcContentProvider.call
.
Để di chuyển nhật ký tin nhắn sang mô-đun CellBroadcast, APK CellBroadcastContentProvider phải hỗ trợ phương thức ContentProvider.query
với các tham số sau:
- Cơ quan có thẩm quyền:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Danh sách cột truy vấn các thuộc tính thông báo được hỗ trợ cho mô-đun CellBroadcast. Nhận dữ liệu (từ cơ sở dữ liệu của bạn) cho phương thứcContentProvider.query
.
Để biết thông tin về hoạt động triển khai tham chiếu cho CellBroadcastContentProvider,
, hãy tham khảo LegacyCellBroadcastContentProvider
.
Thử nghiệm
Bộ kiểm tra tính tương thích (CTS) với Android xác minh chức năng của các API hệ thống phụ thuộc vào ứng dụng. Bạn cũng có thể chạy mô-đun CellBroadcast unit tests/testappsp
.
Nếu OEM đã bật mã bí mật CMAS cho một thiết bị, thì thiết bị đó có thể hỗ trợ chế độ gỡ lỗi bằng các tính năng sau.
Cảnh báo thử nghiệm được nhóm trong mục Cảnh báo khác và có nút bật/tắt.
Nhật ký bao gồm tất cả tin nhắn đã nhận nhưng không hiển thị, chẳng hạn như tin nhắn trùng lặp hoặc tin nhắn bằng ngôn ngữ khác.
Thông báo hiển thị tất cả các thông số có sẵn, bao gồm số sê-ri, mã nhận dạng thông báo và ngày hết hạn.
Để bật chế độ gỡ lỗi, hãy quay số *#*#CMAS#*#* trên trình quay số.
Liên hệ
Để biết thêm thông tin chi tiết hoặc có câu hỏi về mô-đun CellBroadcast, hãy liên hệ với nhóm hỗ trợ CellBroadcast.