Mô-đun Cellbroadcast này giúp giảm những nỗ lực lặp lại cho OEM (do đó, giảm sự phân mảnh trên toàn hệ sinh thái Android và mang lại sự nhất quán hành vi cụ thể cho người dùng cuối) và giúp đơn giản hoá việc kiểm tra cũng như cho các yêu cầu liên quan đến Cellbroadcast (vì mã không thể do Nhà sản xuất thiết bị gốc (OEM) sửa đổi). 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 để bên ngoài chu kỳ phát hành thông thường của Android.
Đị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 của Cellbroadcast SMS, khoanh vùng đị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 tin nhắn đến các ứng dụng. Đó là giải pháp nhắm mục tiêu theo địa lý từ một đến nhiều và Dịch vụ nhắn tin được khoanh vùng địa lý được thiết kế để gửi thư đến nhiều thiết bị di động người dùng điện thoại, trong một khu vực xác định, cùng một lúc. Dịch vụ được xác định bởi uỷ ban GSM ETSI, 3GPP và là một phần của viễn thông.
Ứng dụng CellbroadcastReceiver là một ứng dụng hệ thống mặc định, xử lý cảnh báo khẩn cấp và không khẩn cấp (chẳng hạn như cảnh báo 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 nhà mạng và khu vực quy định.
Luồng thông báo Truyền phát trên di động
Hình sau đây minh hoạ quy trình thông báo của Cellbroadcast.
Hình 1. Luồng thông báo của CellbroadcastReceiver
Lớp giao diện vô tuyến (RIL) thông báo cho
InBoundSMSHandler
về hệ thống CDMA/GSM SMS phát sóng trên di động.Khung này sẽ chuyển tiếp SMS của 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 chuyển tiếp ý định đến ứng dụng CellbroadcastReceiver theo 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
CellbroadcastService và ứng dụng CellbroadcastReceiver được đưa vào một
một tệp APEX
(com.android.cellbroadcast
), có sẵn cho các thiết bị đang chạy
Android 11 trở lên. Mô-đun này chứa mã trong
package/app/CellBroadcastReceiver
rồi 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 tương tác với khung bằng cách chỉ sử dụng phiên bản ổn định
@SystemApi
(không có API @hide
) và phụ thuộc vào các thư viện tĩnh sau đây.
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 lớp phủ tài nguyên trong thời gian chạy (RRO).
Cấu hình quyền
Mô-đun Cellbroadcast được ký bằng chữ ký Google thay vì một nền tảng
chữ ký, tức là mô-đun sẽ mất quyền truy cập vào chữ ký.
Thay vào đó, Android 11 xác định chữ ký mới
quyền com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
bên trong mô-đun Cellbroadcast; chỉ các gói trong mô-đun mới có thể lấy
khi 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 cấp thời gian chạy android.permission.READ_CELL_BROADCASTS
quyền truy cập vào ứng dụng SMS mặc định của hệ thống để truy cập vào nhật ký khẩn cấp
cảnh báo.
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 từ phần Cài đặt >
Ứng dụng và Thông báo > Nâng cao > Cảnh báo khẩn cấp). Để ra mắt
ứng dụng CellbroadcastReceiver trong ứng dụng Cài đặt, hãy thay đổi các tuỳ chọn sau
cài đặt cấu hình với 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ở Cellbroadcast
nhật ký tin nhắn. Trong ứng dụng Nhắn tin trên Android, tính năng này đã được tích hợp vào
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
com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Tích hợp với hộp thư đến 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 cách sử dụ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,
bạn phải cấp quyền AppOpsManager.OP_WRITE_SMS
cho Cellbroadcast
để cung cấp hỗ trợ toàn diện. Để triển khai tham chiếu AOSP,
hãy tham khảo SmsApplication.java
này
bản vá.
Khởi 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 (bao gồm cả ứng dụng bên thứ ba), chẳng hạn như ứng dụng nhắn tin liên kết đến Lịch sử thông báo trên Cellbroadcast.
(Không bắt buộc) Biểu tượng chạy trên màn hình chính của Android do Nhà sản xuất thiết bị gốc (OEM) thêm vào. Để biết thông tin chi tiết, hãy xem phần Thêm biểu tượng chạy.
Chế độ cài đặt ứng dụng CellbroadcastReceiver
Các ảnh chụp màn hình sau đây minh hoạ trình đơn cài đặt của ứ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 chạy
Bạn có thể bật quyền truy cập vào nhật ký tin nhắn trê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 (Dự án nguồn mở Android), hãy ghi đè cấu hình sau bằng cách sử dụng một 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, hãy *#*#CMAS#*#* (*#*#2627#*#* trên
bàn phím số), một ứng dụng gọi điện 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à kênh đặc biệt để các nhà mạng phát sóng nội dung liên quan đến khu vực (ngoại trừ MTN ở Nam Phi). Phát sóng đối với kênh này không dẫn đến hộp thoại hoặc thông báo. Thay vào đó, hãy truyền tin tin nhắn 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 (đối với ví dụ: hiển thị mã ZIP).
Việc triển khai Android CellbroadcastService cung cấp hỗ trợ cho các API sau trong dịch vụ truyền tin trên di động cho ứng dụng Cài đặt và SysUI để nhận thông tin về Channel 50 của kênh phát sóng. Để triển khai việc 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 của trình nhậnconfig_area_info_receiver_packages
thông qua RRO.Liên kết với
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Do các ứng dụng Cài đặt và SysUI nằm ngoài phạm vi của Cellbroadcast 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. Để triển khai tham chiếu, hãy tham khảo Chế độ cài đặt của CellbroadcastService ứng dụng.
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 trong thời gian chạy
(RRO) thành
bật (hoặc tắt) thông số
(ví dụ: bạn có thể tuỳ chỉnh màu thông báo và
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, 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
.Để 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 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 đè bản dịch
bằng RRO hoặc làm việc với nhóm dịch của Google để ngược dòng
bản dịch chuỗi sang mô-đun Cellbroadcast. Nếu bạn ghi đè bản dịch
Google sẽ 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 có một ứng dụng Cellbroadcast cũ, là một cơ chế để lưu giữ và di chuyển dữ liệu ứng dụng (bao gồm cả chế độ cài đặt của 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 của họ để di chuyển dữ liệu. Nếu sử dụng giải pháp Cellbroadcast tuỳ chỉnh, bạn nên xác định APK CellbroadcastContentProvider để lưu giữ dữ liệu (bạn có thể yên tâm xoá APK truyền phát di động cũ 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 sẽ tìm nạp dữ liệu
từ AOSP LegacyCellbroadcastApp hoặc
APK CellbroadcastContentProvider do OEM xác định thông qua tệp APK được xác định rõ
Đơn vị quản lý của cellbroadcast-legacy
.
Sử dụng APK CellbroadcastContentProvider do OEM xác định
Khi xác định APK CellbroadcastContentProvider, APK phải tuân theo các thông số kỹ thuật.
Tệp APK là một tệp APK không có giao diện người dùng chỉ hiện nội dung của cơ sở dữ liệu và
SharedPreferences
thông quaContentProvider
có quyền truy cậpcellbroadcast-legacy
và không truy cập được cho các ứng dụng bên thứ ba.Tệp APK do OEM (Nhà sản xuất thiết bị gốc) phát triển và sở hữu. Tại đây, 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ợ
ContentProvider.call
)
bằng các tham số sau:
- Cơ quan cấp chứng nhậ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 Cellbroadcast . Dữ liệu này được lấy từ
SharedPreferences
choContentProvider.call
.
Để di chuyển lịch sử tin nhắn sang mô-đun Cellbroadcast,
APK CellbroadcastContentProvider phải hỗ trợ
ContentProvider.query
bằng các tham số sau:
- Cơ quan cấp chứng nhận:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Cột truy vấn liệt kê các thuộc tính tin nhắn được hỗ trợ cho mô-đun Cellbroadcast. Lấy dữ liệu (từ cơ sở dữ liệu của bạn) 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 (CTS) với Android sẽ 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ị, thiết bị của bạn có thể hỗ trợ chế độ gỡ lỗi với các tính năng sau.
Các thông báo thử nghiệm được nhóm trong mục Cảnh báo khác với nút bật/tắt.
Nhật ký bao gồm tất cả thông báo đã nhận được nhưng không hiển thị, chẳng hạn như thông báo hoặc thông báo trùng lặp bằng ngôn ngữ khác.
Thông báo cho thấy tất cả các thông số hiện có, bao gồm cả số sê-ri, thông báo Mã nhận dạng và ngày hết hạn.
Để bật chế độ gỡ lỗi, hãy nhấn tổ hợp phím *#*#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.