Thông tin nhận dạng nhà mạng

Các thiết bị chạy Android 9 có thể nhận dạng thông tin về nhà mạng của gói thuê bao để cung cấp mã nhận dạng và tên nhà mạng. Android duy trì một cơ sở dữ liệu mã nhận dạng nhà mạng, với các quy tắc so khớp cho từng nhà mạng và mã nhận dạng nhà mạng riêng biệt của nhà mạng đó. 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 xác định nhà mạng.

Để cải thiện phạm vi và độ chính xác của việc nhận dạng nhà mạng, Android hỗ trợ các bản cập nhật bảng nhận dạng nhà mạng và ngoài băng tần. Mỗi bản cập nhật đều có một số phiên bản và được xuất bản lên AOSP.

Triển khai

Những người dùng muốn triển khai các bản cập nhật ngoài băng tần 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ận dạng 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ẽ duy trì bảng này cho lớp cơ sở dữ liệu mã nhận dạng nhà mạng. Thông tin gần đây nhất trong cơ sở dữ liệu mã nhận dạng hãng vận chuyển được các phương thức công khai getSimCarrierId()getSimCarrierIdName() thu thập.

Thêm thông tin mã nhận dạng hãng vận chuyển vào cơ sở dữ liệu

Để thêm hoặc cập nhật mã nhận dạng hãng vận chuyển 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 hãng vận chuyển.

Yêu cầu của bạn sẽ được xem xét và nếu được phê duyệt, thay đổi sẽ được chuyển đến cơ sở mã AOSP tại carrier_list.pb. Sau đó, bạn có thể sao chép danh sách đã cập nhật và kết hợp danh sách đó vào bản dựng tuỳ chỉnh của mì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ận dạng nhà mạng làm khoá để tìm nạp các 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 mang lại những lợi ích sau:

  • Hợp nhất tất cả các cặp MCC/MNC cho mỗi nhà mạng vào một vị trí duy nhất, xoá 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 hãng vận chuyển 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 các 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ận dạng hãng vận chuyển

Để di chuyển dữ liệu cấu hình từ các cặp MCC/MNC sang mã nhận dạng nhà mạng, hãy làm theo các bước sau:

  1. Nhóm các tệp carrier_config_mccmnc.xml của một hãng vận chuyển lại với nhau. Sử dụng carrier_list.textpb làm thông tin tham khảo để liên kết thông tin MCC, MNC và MVNO với một nhà mạng cụ thể.

  2. Hợp nhất các cấu hình thành một tệp duy nhất.

  3. (Không bắt buộc) Kế thừa dữ liệu từ MNO. 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 (kể cả MVNO) có một tệp cấu hình riêng, nên bạn nên thêm dữ liệu MNO trong quá trình di chuyển.

  4. Nếu không có cấu hình cho mã nhận dạng nhà mạng MVNO, hãy tìm nạp cấu hình từ mã nhận dạng nhà mạng MNO của nhà mạng đó bằng cách sử dụng getCarrierIdFromSimMccMnc.

  5. Đổi tên tệp mới thành carrier_config_carrierid_carrierid_carriername.xml, trong đó carrierid phải tương ứng với canonical_idcarriername phải tương ứng với carrier_name trong carrier_list.textpb