Các thiết bị chạy Android 9 có thể nhận dạng thông tin về nhà cung cấp dịch vụ thuê bao để cung cấp mã nhận dạng và tên nhà cung cấp. Android duy trì một cơ sở dữ liệu mã nhà mạng, với các quy tắc so khớp cho mỗi nhà mạng và mã nhà mạng duy nhất của họ. AOSP bao gồm nội dung của cơ sở dữ liệu mã nhận dạng nhà mạng, trong tệp carrier_list.textpb
.
Cơ sở dữ liệu hợp nhất giúp giảm thiểu logic trùng lặp trong các ứng dụng cần xác định nhà mạng và giới hạn việc hiển thị các thuộc tính nhận dạng nhà mạng.
Để cải thiện phạm vi và độ chính xác của thông tin nhận dạng nhà mạng, Android hỗ trợ cập nhật bảng mã nhận dạng nhà mạng và ngoài phạm vi. Mỗi bản cập nhật đều có số phiên bản và được phát hành cho AOSP.
Triển khai
Những người dùng muốn triển khai bản cập nhật ngoài phạm vi kênh có thể tải tệp nhị phân carrier_list.pb
xuống từ AOSP. Để xem định dạng dễ đọc của bảng, hãy xem carrier_list.textpb
.
Đặt bảng mã nhà mạng trong phân vùng dữ liệu /data/misc/carrierid/
của thiết bị. Nếu bảng mã nhận dạng nhà mạng mới hơn phiên bản hiện có, thì thiết bị sẽ lưu trữ bảng đó vào lớp cơ sở dữ liệu mã nhận dạng nhà mạng.
Thông tin mới nhất từ cơ sở dữ liệu mã nhận dạng của nhà mạng được các phương thức công khai getSimCarrierId()
và getSimCarrierIdName()
thu thập.
Thêm thông tin mã nhận dạng nhà mạng vào cơ sở dữ liệu
Để thêm hoặc cập nhật mã nhận dạng của nhà mạng vào cơ sở dữ liệu, hãy gửi yêu cầu bằng Biểu mẫu thông tin nhận dạng của nhà mạng.
Yêu cầu của bạn sẽ được xem xét và nếu được phê duyệt, thay đổi này sẽ được đẩy lên cơ sở mã AOSP (Dự án nguồn mở Android) tại carrier_list.pb
.
Sau đó, bạn có thể sao chép danh sách đã cập nhật và đưa vào bản dựng tuỳ chỉnh.
Tích hợp mã nhận dạng nhà mạng với CarrierConfig
Kể từ Android 10, cấu hình nhà mạng hỗ trợ việc sử dụng mã nhà mạng làm khoá để tìm nạp cấu hình dành riêng cho nhà mạng từ CarrierService
.
Việc tích hợp mã nhận dạng nhà mạng với CarrierConfig
có những ưu điểm sau:
- Hợp nhất tất cả cặp mã MCC/MNC cho mỗi nhà mạng vào một vị trí duy nhất, loại bỏ dữ liệu trùng lặp hoặc không nhất quán.
- Tạo giá trị nhận dạng chuẩn cho từng nhà mạng và loại bỏ sự mơ hồ.
- Cho phép xác định nhà cung cấp dịch vụ mạng ảo di động (MVNO) bằng mã nhận dạng riêng lẻ thay vì có cấu hình trong nhà mạng di động (MNO).
Di chuyển dữ liệu cấu hình sang mã nhà mạng
Để di chuyển dữ liệu cấu hình từ các cặp MCC/MNC sang mã mạng di động, hãy làm theo các bước sau:
Nhóm các tệp
carrier_config_mccmnc.xml
của một nhà mạng lại với nhau. Sử dụngcarrier_list.textpb
làm tham chiếu để liên kết thông tin MCC, MNC và MVNO với một nhà mạng cụ thể.Hợp nhất các cấu hình thành một tệp.
(Không bắt buộc) Kế thừa dữ liệu từ các nhà mạng di động. MVNO kế thừa cấu hình từ MNO trong tệp
carrier_config_mccmnc.xml
cũ. Vì mã nhận dạng nhà mạng cho phép tất cả nhà mạng, bao gồm cả MVNO, có một tệp cấu hình chuyên dụng, nên bạn nên đưa dữ liệu MNO vào trong quá trình di chuyển.Nếu không có cấu hình cho mã nhà mạng MVNO, hãy tìm nạp cấu hình từ mã nhà mạng MNO bằng
getCarrierIdFromSimMccMnc
.Đổi tên tệp mới thành
carrier_config_carrierid_carrierid_carriername.xml
, trong đó carrierid phải tương ứng vớicanonical_id
và carriername phải tương ứng vớicarrier_name
trongcarrier_list.textpb