在建立数据业务的过程中要调用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);
}