在建立数据业务的过程中要调用createAllApnList()来根据当前sim的mccmnc的值从apn数据库也就是telephony.db里面查询出对应的apn并构建成ApnSetting对象.

1.在createApnList()方法中要注意虚拟运行商的apn的选择过程,往往虚拟运行商设置的apn没有被用来建立数据业务是这里面判断问题。当然需要具体的问题具体分析,这里只是做提醒.

2.调用addEmergencyApnSetting()方法添加emergencyapn到mAllApnSettings数组里面去.

3.调用dedupeApnSettings()方法去除重复的ApnSetting.

4.对mPreferredApn对象设置,如果是刷机后第一次开机,那么是没有preferapn的,当建立成功后才会设置对应的prefer apn.

setPreferredApn(-1)就是清除prefer apn的设置值。prefer apn从代码上来看是对数据库的操作,实际上prefer apn是存在sharedpreference里面的.

    if (mAllApnSettings.isEmpty()) {

        if (DBG) log("createAllApnList: No APN found for carrier: " + operator);

        mPreferredApn = null;

        // TODO: What is the right behavior?

        //notifyNoData(DataConnection.FailCause.MISSING_UNKNOWN_APN\);

    } else {

        mPreferredApn = getPreferredApn();

        if (mPreferredApn != null && !mPreferredApn.numeric.equals(operator)) {

            mPreferredApn = null;

            setPreferredApn(-1);

        }

        if (DBG\) log("createAllApnList: mPreferredApn=" + mPreferredApn);

    }

results matching ""

    No results matching ""