Android运营商名称显示之PLMN与SPN显示规则(原)

本文详细解析了Android系统中运营商名称(SPN和PLMN)的显示规则,包括3GPP的规定和Android代码实现。当SPN和PLMN存在时,会依据不同网络状态和SIM卡文件内容决定显示SPN、PLMN或两者同时显示。更新SPN显示的逻辑主要在GsmServiceStateTracker的updateSpnDisplay方法中执行,并通过广播通知系统变化。
摘要由CSDN通过智能技术生成
        前面的两节分别介绍了 PLMNSPN的读取方法,那么在锁屏、状态栏、通知栏这些地方的运营商名称究竟是来自于PLMN呢?还是来自于SPN呢?
        在3GPP中规定的运营商名称显示规则如下:
        1、名称可以为SPN或PLMN
        2、如果没有SPN文件,那么就显示PLMN
        3、若有SPN,并且注册的PLMN是HPLMN或者注册的PLMN在SIM卡文件EF_SPDI中,那么:
            (1)如果有SPN就要显示SPN
            (2)如果SPN的bit1 = 1, 则需要同时显示PLMN,如果SPN的bit1=0,则不需要同时显示PLMN
        4、若有SPN,注册的PLMN是Roaming PLMN且注册的PLMN也不在SIM卡文件EF_SPDI中,那么
            (1)显示PLMN
            (2)如果SPN的bit2=0,则需要同时显示SPN,如果SPN的bit2=1,则不需要同时显示SPN

        下面我们用代码来梳理上面的规则。
        在GsmServiceStateTracker中,接收到EVENT_SIM_RECORDS_LOADED消息或者ACTION_LOCALE_CHANGED广播后,就会触发SPN的更新显示机制。其入口为updateSpnDisplay():
        @GsmServiceStateTracker.java
        protected void updateSpnDisplay() {
            IccRecords iccRecords = mIccRecords;
            String plmn = null;
            boolean showPlmn = false;
            int rule
  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值