Mô-đun CellBroadcast giúp nhà sản xuất thiết bị gốc (OEM) giảm bớt các thao tác lặp lại (đồng thời giảm sự phân mảnh trên 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á việc 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ì nhà sản xuất thiết bị gốc không thể sửa đổi mã). Mô-đun này có thể cập nhật, nghĩa là có thể nhận được bản cập nhật về chức năng bên 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 đây.
Dịch vụ CellBroadcastService hỗ trợ giải mã SMS CellBroadcast, khoanh vùng địa lý cho cảnh báo khẩn cấp qua mạng không dây (WEA) 3.0, kiểm tra trùng lặp tin nhắn và truyền tin nhắn đến các ứng dụng. Đây là dịch vụ nhắn tin một chiều theo vị trí địa lý và khoanh vùng địa lý, được thiết kế để phân phối tin nhắn cho nhiều người dùng điện thoại di động trong một khu vực được xác định cùng một lúc. Dịch vụ này do uỷ ban GSM ETSI (3GPP) xác định, đồng thời 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 quy định của nhà mạng và khu vực.
Quy trình tin nhắn CellBroadcast
Hình sau đây minh hoạ quy trình thông báo của Cellbroadcast.
Hình 1. Luồng tin nhắn CellBroadcastReceiver
Lớp giao diện vô tuyến (RIL) thông báo cho
InBoundSMSHandler
về tin nhắn 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 xử lý thông báo, 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 đưa vào một tệp APEX (com.android.cellbroadcast
) duy nhất dành 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 mô-đun
Mô-đun CellBroadcast tương tác với khung chỉ bằng cách sử dụ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, nghĩa là mô-đun này sẽ mất quyền truy cập vào các quyền ký.
Thay vào đó, Android 11 xác định quyền chữ ký mới com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
bên trong mô-đun CellBroadcast; chỉ các gói trong mô-đun này mới có thể nhận được quyền này vì các gói này đượ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 cấp quyền thời gian chạy android.permission.READ_CELL_BROADCASTS
cho ứng dụng SMS hệ thống mặc định để 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 các chế độ cài đặt của Cellbroadcast trong ứng dụng Cài đặt (người dùng cuối truy cập vào trang cài đặt Cellbroadcast trong phần 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 ứng dụng vào các ứng dụng nhắn tin để mở nhật ký tin nhắn của Cellbroadcast. Trong ứng dụng Android Messaging, tính năng này đã được tích hợp vào phần Cài đặt > Nâng cao > Cảnh 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 là com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Tích hợp với hộp thư SMS
Bạn có thể bật tính năng 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. Để triển khai tham chiếu AOSP (Dự án nguồn mở Android), 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 ứng dụng Cài đặt.
Một ứng dụng (bao gồm cả ứng dụng bên thứ ba) như ứng dụng tin nhắn liên kết với nhật ký tin nhắn CellBroadcast.
(Không bắt buộc) Biểu tượng khởi chạy trên màn hình chính Android do nhà sản xuất thiết bị gốc (OEM) thêm. Để biết thông tin chi tiết, hãy xem phần Thêm biểu tượng khởi chạy.
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 của ứ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 khởi chạy
Bạn có thể bật tính năng 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.
Để bật quyền 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 (Dự án nguồn mở Android), 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 nghe 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 để truyền phát 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 truyền tin sẽ không dẫn đến 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 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 Android CellBroadcastService hỗ trợ các API sau trong dịch vụ truyền tin qua sóng di động cho ứng dụng Cài đặt và SysUI để nhận thông tin truyền tin qua Kênh 50. Để triển khai tính năng này, hãy làm như sau:
Đăng ký thông báo truyền tin
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 dịch vụ hỗ trợ toàn diện. Để tham khảo cách triển khai, hãy tham khảo ứng dụng Cài đặt CellBroadcastService.
Tuỳ chỉnh
Bạn không thể trực tiếp sửa đổi 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 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ố 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ủ, hãy tham khảo
overlayable.xml
.Để biết 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 được kỳ vọng của bạn, bạn có thể ghi đè tài nguyên bản dịch bằng cách sử dụ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 trên cho mô-đun CellBroadcast. Nếu bạn ghi đè tài nguyên dịch, Google phải hiển thị các 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 bao gồm 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 đưa ứng dụng CellBroadcast cũ vào 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 tệp APK CellBroadcastContentProvider để lưu giữ dữ liệu (bạn có thể xoá tệp APK CellBroadcast 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 tệp APK CellBroadcastContentProvider do OEM xác định thông qua quyền cellbroadcast-legacy
được xác định rõ ràng.
Sử dụng APK CellbroadcastContentProvider do OEM xác định
Khi xác định một APK CellbroadcastContentProvider, APK phải tuân theo các quy cách sau.
APK này là một tệp 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 đối tượngContentProvider
có quyềncellbroadcast-legacy
và không thể truy cập được vào các ứng dụng bên thứ ba.APK do nhà sản xuất thiết bị gốc (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:
- 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, tệp APK CellBroadcastContentProvider phải hỗ trợ phương thức ContentProvider.query
với các tham số sau:
- Cơ quan cấp chứng nhận:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Các cột truy vấn liệt kê các thuộc tính tin nhắn được hỗ trợ cho mô-đun CellBroadcast. Nhận dữ liệu (từ cơ sở dữ liệu) cho phương thứcContentProvider.query
.
Để 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 với Android (CTS) 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 phần Cảnh báo khác với 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 tham số hiện có, bao gồm số sê-ri, mã 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âu hỏi về mô-đun CellBroadcast, hãy liên hệ với nhóm hỗ trợ CellBroadcast.