Andoird 添加系统默认配置APN

一,项目场景与问题描述

平台:RK3288
系统:Android5.1

客户机器是香港的机柜(编码;HK),使用的是香港的SIM卡, 第一次烧录或者恢复出厂设置,设置–移动网络–接入点名称–APN中可以识别到香港那边的信息,但是都没有选中,需要手动选择,如果更换另一张SIM卡(同一个运营商号码不同)重启就要再次手动选择;

本地测试使用中国移动(4G)的SIM卡,开机时会自动选择中国移动cmnet接入点名称。


二,系统中APN默认配置文件的位置:

系统APN默认的配置来自于 system/etc/apns-conf.xml这个文件,生成它的地方在在源码vendor/rockchip/common/phone/etc/apns-full-conf.xml文件中,一般根据项目的不同可能位置不同,找不到直接find搜索下, 在apns-conf.xml中可以看到许多已经存在的apn信息,添加上你需要配置的新的APN即可。

比如客户提供的香港的apn选项:

<apn carrier="3 HK" mcc="454" mnc="03" apn="ipc.lte.three.com.hk" type="default,supl" />

三,开机默认选中配置好的APN:

添加配置好apn之后,重新烧录开机,插入香港的SIM卡,发现 设置–移动网络–接入点名称–APN中有新添加的APN,但是没有默认选中;但是使用移动或者联通会有默认选中功能。可以通过源码修改解决此问题:

packages/apps/Settings/src/com/android/settings/ApnSettings.java中,定位到fillList()方法:

private void fillList() {
    
    
...
boolean selectable = ((type == null) || !type.equals("mms"));
pref.setSelectable(selectable);

//add by fy start
//如果name和apn和numeric满足自己配置的条件,就直接setChceked
if("3 HK".equals(name) && "ipc.lte.three.com.hk".equals(apn) && where.contains("45403")){
    
    
      pref.setChecked();
      apnList.addPreference(pref);
      Log.d("fy","3 HK");
} else{
    
    
//add by fy end
        if (selectable) {
    
    
                if ((mSelectedKey != null) && mSelectedKey.equals(key)) {
    
    
                        pref.setChecked();
                }
                apnList.addPreference(pref);
        } else {
    
    
                mmsApnList.add(pref);
        }
}
...
}

猜你喜欢

转载自blog.csdn.net/weixin_45639314/article/details/131682712
APN
今日推荐