运行 Android 9 的设备可以识别订阅运营商信息,以提供 ID 和运营商名称。Android 维护一个运营商 ID 数据库,其中包含每个运营商及其唯一运营商 ID 的匹配规则。AOSP 在 carrier_list.textpb
文件中包含了运营商 ID 数据库的内容。统一的数据库最大限度地减少了需要识别运营商的应用中的重复逻辑,并限制了运营商识别属性的暴露。
为了提高运营商识别的覆盖率和准确性,Android 支持带外和运营商 ID 表更新。每次更新都带有版本号,并发布到 AOSP。
实现
想要实现带外更新的用户可以从 AOSP 下载 carrier_list.pb
二进制文件。要查看该表的可读格式,请参阅 carrier_list.textpb
。
将运营商 ID 表放在设备的 /data/misc/carrierid/
数据分区中。如果运营商 ID 表比现有版本更新,设备会将该表持久化到 运营商 ID 数据库类。来自运营商 ID 数据库的最新信息会被公共方法 getSimCarrierId()
和 getSimCarrierIdName()
获取。
将运营商 ID 信息添加到数据库
要向数据库添加或更新运营商 ID,请使用 运营商识别信息表单 提交请求。
您的请求将被审核,如果获得批准,更改将推送到 AOSP 代码库中的 carrier_list.pb
。然后,您可以复制更新后的列表并将其合并到您的自定义构建中。
将运营商 ID 与 CarrierConfig 集成
从 Android 10 开始,运营商配置 支持使用运营商 ID 作为键,从 CarrierService
中获取运营商特定的配置。
将运营商 ID 与 CarrierConfig
集成具有以下优势
- 将每个运营商的所有 MCC/MNC 对整合到一个位置,从而消除重复或不一致的数据。
- 为每个运营商创建一个规范的标识符,并消除歧义。
- 允许移动虚拟网络运营商 (MVNO) 使用单独的 ID 进行识别,而不是将配置作为移动网络运营商 (MNO) 的一部分。
将配置数据迁移到运营商 ID
要将配置数据从 MCC/MNC 对迁移到运营商 ID,请按照以下步骤操作
将来自单个运营商的
carrier_config_mccmnc.xml
文件分组在一起。使用carrier_list.textpb
作为参考,将 MCC、MNC 和 MVNO 信息映射到特定的运营商。将配置合并到一个文件中。
(可选)从 MNO 继承数据。MVNO 在传统的
carrier_config_mccmnc.xml
文件中从 MNO 继承配置。由于运营商 ID 允许包括 MVNO 在内的所有运营商拥有专用的配置文件,因此建议在迁移期间包含 MNO 数据。如果 MVNO 运营商 ID 的配置不存在,请使用
getCarrierIdFromSimMccMnc
从其 MNO 运营商 ID 获取配置。将新文件重命名为
carrier_config_carrierid_carrierid_carriername.xml
,其中 carrierid 必须对应于canonical_id
,carriername 应对应于carrier_list.textpb
中的carrier_name