APN设置 --- 之一

本文详细分析了Android中设置默认APN的过程,从DcTracker构造方法开始,介绍了监听SIM卡变化、数据库变更以及初始化APN上下文的方法。着重讲解了onUpdateIcc方法中createAllApnList的实现,包括从数据库获取APN信息,创建ApnSetting对象,并设置默认APN。同时,讨论了APN的type字段在网络能力上的作用和潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.2 设置默认APN

Phone进程中的DcTracker构造方法如下,

1,调用父类DcTrackerBase的构造方法,

super(p);

DcTrackerBase的构造方法主要逻辑如下,

监听SIM卡的变化,

mUiccController = UiccController.getInstance();
mUiccController.registerForIccChanged(this, DctConstants.EVENT_ICC_CHANGED, null);

也就是说,如果SIM卡有变化, UiccController会向DcTrackerBase发送EVENT_ICC_CHANGED消息, 

DcTrackerBase的handleMessage方法对该消息处理如下,

case DctConstants.EVENT_ICC_CHANGED: {
    onUpdateIcc();
    break;
}

会回调DcTracker的onUpdateIcc方法。

2,注册telephony.db数据库的变化,

mApnObserver = new ApnChangeObserver();
p.getContext().getContentResolver().registerContentObserver(
   Telephony.Carriers.CONTENT_URI, true, mApnObserver);

ApnChangeObserver是DcTracker的内部类,定义如下,

private class ApnChangeObserver extends ContentObserver {
     public ApnChangeObserver () {
          super(mDataConnectionTracker);
     }

     @Override
     public void onChange(boolean selfChange) {
         sendMessage(obtainMessage(DctConstants.EVENT_APN_CHANGED));
     }
}

而DcTrackerBase继承Handler,如下,

public abstract class DcTrackerBase extends Handler {
  
  

因此,一旦telephony.db数据库发生变化,会调用ApnChangeObserver 的onChange方法,然后调用Handler 

的sendMessage方法发送EVENT_APN_CHANGED消息。DcTr

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值