(M)SIM卡开机流程分析之显示名称加载

Android SIM卡识别加载流程 介绍Android系统中SIM卡的识别与信息加载流程 阅读详情

前面有说过,SIM卡的开机流程是从PhoneFactory.java文件中的makeDefaultPhone方法开始的,SIM的displayName也是从这部分开始的,接下来记录一下自己的研究成果

public static void makeDefaultPhone(Context context) {
    synchronized (sLockProxyPhones) {
        if (!sMadeDefaults) {
            ......
            // Instantiate UiccController so that all other classes can just
            // call getInstance()
            // Leo,这个方法是开机后SIM卡启动过程中,较为重要的一个方法,需要注意
            // Leo,获取UiccController的对象
            mUiccController = UiccController.make(context, sCommandsInterfaces);

            for (int i = 0; i < numPhones; i++) {
                PhoneBase phone = null;
                // Leo,根据Preferred Network Mode,获得SIM卡的PhoneType,从而确认Phone的类型,是GSMPhone还是CDMALTEPhone类型
                int phoneType = TelephonyManager.getPhoneType(networkModes[i]);
                if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
                    phone = new GSMPhone(context,
                            sCommandsInterfaces[i], sPhoneNotifier, i);
                } else if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
                    phone = new CDMALTEPhone(context,
                            sCommandsInterfaces[i], sPhoneNotifier, i);
                }
                Rlog.i(LOG_TAG, "Creating Phone with type = " + phoneType + " sub = " + i);

                // Leo,Phone代理, 注意这个PhoneProxy是继承自Handler
                sProxyPhones[i] = new PhoneProxy(phone);
            }
            ......

            Rlog.i(LOG_TAG, "Creating SubInfoRecordUpdater ");
            sSubInfoRecordUpdater = new SubscriptionInfoUpdater(context,
                    sProxyPhones, sCommandsInterfaces);
            ......
        }
    }
}
在此方法中,主要是做了如下几件事

1. 使用UiccController类的make方法,创建UiccController对象

2. 创建PhoneProxy代理类对象

3. new一个SubscriptionInfoUpdater对象

从此前的分析中,我们知道,UiccController类的make方法,主要是创建了UiccController对象,那么我们来具体看看代码

// Leo,单例模式,而且make方法只能够调用一次,否则抛出异常
public static UiccController make(Context c, CommandsInterface[] ci) {
    synchronized (mLock) {
        if (mInstance != null) {
            throw new RuntimeException("MSimUiccController.make() should only be called once");
        }
        mInstance = new UiccController(c, ci);
        return (UiccController)mInstance;
    }
}
// Leo,第二个参数是RIL集合
private UiccController(Context c, CommandsInterface []ci) {
    if (DBG) log("Creating UiccController");
    mContext = c;
    mCis = ci;
    for (int i = 0; i < mCis.length; i++) {
        Integer index = new Integer(i);
        mCis[i].registerForIccStatusChanged(this, EVENT_ICC_STATUS_CHANGED, index);
        // TODO remove this once modem correctly notifies the unsols
        if (DECR
(M)SIM卡开机流程分析之SPN加载 本篇仅以USIM卡为例进行代码分析 从之前对于UiccController.java文件进行分析中,我们知道UiccController中创建了UiccCard,而在UiccCard中创建了一个UiccCardAppliaction对象,而在UiccCardApplication的构造方法中,调用了如下方法: UiccCardApplication(UiccCard uiccCard, 阅读详情

相关推荐

告别玄学调参:手把手教你基于AOSP Telephony框架定制SIM卡运营商显示名称

本文详细解析了如何基于AOSP Telephony框架深度定制SIM卡运营商显示名称。从代码定位到实战修改,涵盖了运营商名称显示机制、核心代码修改步骤以及测试验证方案,帮助开发者掌握Android系统定制开发中的关键技术,特别适用于需要为特定地区或运营商定制显示规则的场景。

weixin_30245867的博客 376

Android手机插卡后APN菜单显示的幕后逻辑:从SIM卡MCC/MNC到UI列表

本文深入解析Android手机插卡后APN菜单显示的幕后逻辑,从SIM卡MCC/MNC识别到UI列表动态加载的全流程。详细剖析了APN配置的三层架构、SIM卡信息匹配机制、UI动态构建技术及跨进程通信设计,并提供了性能优化实践和问题排查指南,帮助开发者深入理解Android移动网络配置的核心机制。

weixin_33744854的博客 266

Android:一篇就够!全面&详细解析APN(涉及内容:GGSN,authtype,MVNO,pdp,Apns-conf,supl,hipri,dun)

全面解析android APN 此博文写作坚持以下理念: 图胜于表,表胜于言; 最好的解释是不用解释; 1. APN的概念 1.1 APN的定义 Definition of Access Point Name In the GPRS backbone, an Access Point Name (APN) is a reference to a GGSN. To support inter-PLM...

GentelmanTsao的博客 2万+

Android 7.1开机后上不了网?手把手教你排查APN加载与DcTracker拨号流程

本文详细解析了Android 7.1开机后无法上网的问题,重点介绍了APN加载与DcTracker拨号流程的排查方法。通过分析APN核心机制、TelephonyProvider数据库和DcTracker状态机,提供了一套完整的诊断与解决方案,帮助开发者快速定位并修复网络连接故障。

weixin_28739079的博客 349

multi2sim编译与使用(3)-同时加载多个应用程序

multi2sim对于多线程应用程序(比如使用pthread和OpenMP等技术编写的轻量级多线程应用)以及多个应用程序同时运行(类似于真正的PC机上同时运行多个应用程序)都有非常完美的支持。这一特性对于测试多线程平台非常有帮助。在multi2sim当中,一个线程或者一个单线程应用程序都被看作一个context。如果是多线程的单一应用程序比如pthread多线程程序,在程序调用pthread_cr

xer1234的专栏 1973

Android状态栏显示运营商名称:SystemUI源码修改实战指南

Android系统UI定制是移动开发中的高级话题,它涉及对系统框架层的深入理解与修改。其核心原理在于通过修改SystemUI等系统级应用的源码或资源,实现对状态栏、导航栏等全局UI组件的个性化控制。这项技术的价值在于能够突破普通应用的限制,实现原生、稳定且深度集成的系统功能增强,广泛应用于定制ROM开发、系统优化和深度个性化场景。例如,在状态栏常驻显示运营商名称,就是一个典型的框架层定制需求,它要求开发者精准定位CarrierLabel等关键组件,并理解其与Telephony服务的交互逻辑。本文将以这一具体

ciya3282的博客 395

Isaac Sim 入门教程(四)强化学习策略训练宇树人形机器人四足机器人示例

isaac_sim_policy_example Extension 是在 Isaac Sim 中部署 Isaac Lab 强化学习策略的一个框架和一组辅助函数。有关在 Isaac Sim 中训练和构建策略的详细信息,请访问在 Isaac Sim 中部署策略。该扩展程序默认已启用。如果被禁用,可在扩展管理器中搜索 isaacsim.robot.policy.example 重新启用。要运行下面的示例,请激活 “视窗”>“示例”>“机器人示例”,这将打开 “机器人示例 ”选项卡。

机器人控制与仿真应用 3922

android 解析 开机加载SIM联系人及对SIM卡联系人的操作

通过自身1个星期的研究,对开机启动后加载SIM卡联系人的操作流程进行简要分析 , 同时通过Log分析 发现对SIM卡联系人操作时出现的问题,并进行分析,给刚接触这一模块的朋友提供一些经验,同时也方便自己以后深入研究验证。

怎么选?一文读懂12种SPC控制图,从基础到进阶,再到Python代码实现

本文系统介绍了12种常用SPC控制图的应用场景和特点,包括计量型(Xbar-R图、Xbar-s图、I-MR图等)、计数型(P图、NP图、U图等)及进阶控制图(EWMA图、CUSUM图、多元控制图)。文章强调控制图是SPC的核心工具,能有效区分过程变异类型,实现"预防优于检测"的质量管理目标。通过数据示例和Python代码展示了各类控制图的实现方法,为质量管理人员提供了实用参考。

m0_56592100的博客 4116

【Chisel】2.4 时序逻辑

2.4 时序逻辑@[TOC](2.4 时序逻辑)前言寄存器(`Reg`)实例Chisel的状态函数实例2 RegNext实例3 RegInit移位器附录 显式的时钟信号和复位信号 前言 没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,重要的事情说三遍。 这一节我们将要学习Chisel中的时序逻辑。在最后我们会实现一个移位器。 这里你需要知道的是,前面的这几节实际上都是对Chisel的基础语法的学习,它并不会给你带来很大的“惊喜”。Chisel真正的作用是把电路

快乐学习小猪猪的博客 842

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 165

华为数通---配置风暴控制案例

风暴控制可以通过阻塞报文或关闭端口来阻断广播、未知组播和未知单播报文的流量。

2301_77081516的博客 1624

Bochs源码分析 - 26:8259中断控制器介绍

前言 现在我们跟着《x86/x64体系探索及编程》来分析17章内容 -- 8259中断控制器。这个是涉及硬件的,很遗憾,除了大学期间使用STM32搞过一个计算器,其余就没多少硬件编程经验,我在淘宝上找了下大概是这个东东。 https://pdos.csail.mit.edu/6.828/2010/readings/hardware/8259A.pdf 上面是8259A的芯片手册,里面讲的还是挺详细的,虽然里面很多东西还是看不太懂,但是结合着《x86/...

WriteAnything_的博客 967

W5500以太网&PoE扩展模块原理图设计,已量产

本文将以 W5500 以太网 & PoE 扩展板为对象,从嵌入式硬件设计的视角,深度拆解其电路架构、核心器件选型、关键功能实现,以及这款板子解决行业痛点的设计思路。

不脱发的程序猿 936

C语言程序设计——单词的统计和替换

【任务描述】 对任意一篇英文文章,统计其中每个单词分别出现了多少次,并可替换指定的单词。⑶ 对单词进行替换时,允许用户选择全部替换或逐个替换。替换完成后,将文章保存到文件。⑴ 英文文章以文件形式输入。⑵ 统计的结果保存到文件。

m0_60738889的博客 810

手把手教你学 GPU KMD--1.2:UMD、KMD 与 DDK 的协作关系(下)——权限提升与安全边界

本文探讨了UMD、KMD与DDK协作中的权限提升与安全边界问题。GPU作为强大DMA引擎,必须通过分层权限模型(用户态/内核态)隔离风险,KMD作为守门人对UMD请求进行严格校验。文章详细分析了权限提升路径、安全边界设计(GPU虚拟内存隔离、命令白名单、IOMMU强制隔离等),并列举历史漏洞案例说明安全边界的重要性。现代增强方案包括虚拟化与可信执行环境。核心安全原则是"永远不信任用户态数据",需对所有地址、命令、资源和DMA进行严格管控。

amy_mhd的博客 324

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: (M)SIM卡开机流程分析之SPN加载
下一篇: (N)Telephony分析(一)之zygote进程启动
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值