运行 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 数据库类。公共方法getSimCarrierId()
和getSimCarrierIdName()
获取来自运营商 ID 数据库的最新信息。
将运营商 ID 信息添加到数据库
要向数据库添加或更新承运人 ID,请使用承运人标识信息表单提交请求。
审核您的请求,如果获得批准,更改将推送到位于carrier_list.pb
的 AOSP 代码库。然后,您可以复制更新的列表并将其合并到您的自定义构建中。
将运营商 ID 与 CarrierConfig 集成
从 Android 10 开始,运营商配置支持使用运营商 ID 作为键来从CarrierService
获取运营商特定的配置。
将运营商 ID 与CarrierConfig
集成具有以下优点:
- 将每个运营商的所有 MCC/MNC 对合并到一个位置,消除重复或不一致的数据。
- 为每个运营商创建一个规范标识符并消除歧义。
- 允许使用单独的 ID 识别移动虚拟网络运营商 (MVNO),而不是将配置作为移动网络运营商 (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_name
中的carrier_list.textpb