Đối với các thiết bị chạy Android 15 trở lên, bạn có thể
triển khai lựa chọn miền
giữa dịch vụ IMS và các dịch vụ cũ qua mạng chuyển mạch mạch sử dụng
API hệ thống DomainSelectionService
. DomainSelectionService
là giao diện được xác định rõ ràng giữa nền tảng Android và nhà cung cấp được cung cấp
triển khai lựa chọn miền. Giao diện này cho phép triển khai nhà cung cấp
cung cấp thông tin tín hiệu, chẳng hạn như miền của các cuộc gọi đi và tin nhắn SMS
và lựa chọn ưu tiên về loại mạng trong quá trình quét mạng cho nền tảng.
Hình 1. Sơ đồ cấu trúc cho tính năng lựa chọn miền
Ví dụ và nguồn
Android cung cấp cách triển khai tham chiếu cho tính năng chọn miền trong
AOSP (Dự án nguồn mở Android) tại TelephonyDomainSelectionService
. Để biết thông tin chi tiết
tài liệu về API DomainSelectionService
, hãy xem
DomainSelectionService
và các lớp khác trong API.
Triển khai
Để triển khai tính năng chọn miền trên thiết bị Android, hãy làm như sau các bước cần thiết:
Tạo một ứng dụng chọn miền. Dịch vụ phải được xác định trong Tệp
AndroidManifest.xml
.Thêm cấu hình vào lớp phủ thiết bị để cho phép nền tảng liên kết với Triển khai
DomainSelectionService
.Hỗ trợ giao diện HAL vô tuyến bắt buộc cho tính năng chọn miền.
Phần này cung cấp thêm thông tin chi tiết về các bước này.
Thêm mục dịch vụ trong AndroidManifest.xml
Để ứng dụng chọn miền của bạn có thể đăng ký dịch vụ DomainSelectionService
với khung này, hãy thêm một mục nhập dịch vụ vào tệp kê khai bằng cách sử dụng đoạn mã sau
định dạng:
<service
android:name="com.example.domainselection.DomainSelectionService"
android:directBootAware="true"
android:persistent="true"
…
android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
…
<intent-filter>
<action android:name="android.telephony.DomainSelectionService"/>
</intent-filter>
…
</service>
Định nghĩa dịch vụ trong AndroidManifest.xml
phải xác định những điều sau
để tính năng chọn miền hoạt động.
directBootAware="true"
: Cho phép dịch vụ được khám phá và chạy bởi điện thoại trước khi người dùng mở khoá thiết bị. Dịch vụ không thể truy cập bộ nhớ được mã hoá trên thiết bị trước khi người dùng mở khoá thiết bị. Để biết thêm của bạn, hãy xem phần Hỗ trợ chế độ Khởi động trực tiếp và Mã hoá dựa trên tệp.persistent="true"
: Cho phép dịch vụ chạy liên tục và không bị hệ thống loại bỏ để lấy lại bộ nhớ. Thuộc tính này chỉ hoạt động nếu ứng dụng được tạo dưới dạng ứng dụng hệ thống.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: Đảm bảo rằng chỉ một quy trình có quyềnBIND_DOMAIN_SELECTION_SERVICE
được cấp cho nó có thể liên kết với ứng dụng. Thao tác này ngăn một ứng dụng lừa đảo liên kết với dịch vụ vì chỉ các ứng dụng hệ thống mới có thể được cấp quyền khung.
Dịch vụ cũng phải chỉ định phần tử intent-filter
có phần tử
Hành động android.telephony.DomainSelectionService
. Điều này cho phép khung tìm
dịch vụ DomainSelectionService
.
Xác định cấu hình trong lớp phủ thiết bị
Để nền tảng liên kết an toàn với dịch vụ DomainSelectionService
, hãy thêm
cấu hình sau đây cho lớp phủ thiết bị:
config_domain_selection_service_component_name
: tên thành phần (chuỗiComponentName
được làm phẳng) cho thuộc tính Dịch vụDomainSelectionService
Vì Android không hỗ trợ những ứng dụng có thể tải xuống được của bên thứ ba
DomainSelectionService
, thì ứng dụng chọn miền phải là
ứng dụng hệ thống nằm trong /system_ext/priv-app/
hoặc /product/priv-app/
. Khung sẽ xác minh xem tên gói của hoạt động triển khai
khớp với giá trị lớp phủ của thiết bị để đảm bảo chỉ những ứng dụng được cài đặt trước đáng tin cậy
bị ràng buộc.
Hỗ trợ giao diện HAL (Lớp trừu tượng phần cứng) cho đài
Để bật tính năng chọn miền, hãy hỗ trợ lớp trừu tượng phần cứng (HAL) cần có sau đây giao diện:
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);
-
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
Xác nhận kết quả
Để kiểm tra xem khung điện thoại có phản hồi đúng cách với
DomainSelectionService
, chạy các bài kiểm thử CTS trong
DomainSelectionServiceTestOnMockModem
.