数据开关主要是在MobileNetworkSettings中设置的,之后主要是在DcTracker中进行处理。CallTracker处理通话相关的流程(外拨、接听、拒接、保持...),DcTracker处理数据相关的流程(APN的操作、数据的断开和建立以及彩信收发的数据请求)。这里主要是列出关键的log打印,方便跟踪问题,看具体是在哪里断开了。
设置数据开关开跟关
MobileNetworkSettings.java
onPreferenceTreeClick()
关键log:onPreferenceTreeClick: preference == mButtonDataEnabled, checked=
TelephonyManager
setDataEnabled
关键log:setDataEnabled: enabled
PhoneInterfaceManager
setDataEnabled
DcTracker
setDataEnabled
关键log:CMD_SET_USER_DATA_ENABLE enabled=
onSetUserDataEnabled //这里的android.provider.Settings.Global.MOBILE_DATA属性是数据开关的标志,如果如要默认开关的打开和关闭可以修改这个属性值,如果需要根据不同运营商定制,那么可以在CarrierConfig/res/xml/vendor.xml中设置
关键log: log("mDataEnabledSettings.isUserDataEnabled():" +...+"/enabled:" +enabled);
关键log:log("onSetUserDataEnabled: <old>" + android.provider.Settings.Global.MOBILE_DATA + " = "...);
onTrySetupData
关键log:onTrySetupData: reason=
setupDataOnConnectableApns
关键log:setupDataOnConnectableApns:
trySetupData
关键log:trySetupData for type:
trySetupData: X retValue= //数据建立连接是否成功;成功返回true
setupData
bringup--DataConnection.EVENT_CONNECT //在DataConnection中会使用到
createDataConnection
int status = dcac.fullyConnectSync(mPhone.getContext(), this, conn.getHandler());//创建连接成功时的回调
关键log:createDataConnection
DataConnection:继承状态机,初始化数据连接状态会调用DcInactiveState
makeDataConnection
DcInactiveState
case EVENT_CONNECT
onConnect
关键log:onConnect: carrier=
RIL.java
setupDataCall
具体可以看这篇博客:
https://blog.csdn.net/u012439416/article/details/75264310