识别运营商

运行 Android 9 及更高版本的设备可以识别订阅运营商信息,以提供相应 ID 和运营商名称。Android 维护着一个运营商 ID 数据库,该数据库采用针对每个运营商及其专属运营商 ID 的匹配规则。AOSP 在 android/packages/providers/TelephonyProvider/assets/carrier_list.textpb 文件中包含运营商 ID 数据库的内容。统一的数据库有助于最大限度地减少需要识别运营商的应用内的重复逻辑,并限制暴露可用于识别运营商的属性。

为了更准确地识别更多运营商,Android 支持带外运营商 ID 表更新。每个更新版本都会有一个版本号,并会发布到 AOSP。

实现

想要实现带外更新的用户可以从 AOSP 下载 carrier_list.pb 二进制文件。要查看该表的可读懂格式,请参阅 carrier_list.txtpb

请将更新后的运营商 ID 表放到 /data/misc/carrierid/ 数据分区中。如果更新后的版本高于安装的版本,设备会将该表保留到运营商 ID 数据库中。公共 API getSimCarrierId()getSimCarrierIdName() 将获取运营商 ID 数据库中的最新信息。