6. MobileDataStateTracker.java-> getPhoneService ():
mPhoneService 是电话的服务的客户端,它的 server 端实际上是 PhoneInterfaceManager
对象(com.android.phone.PhoneInterfaceManager),MobileDataStateTracker 通过如下方式调用
获取 ITelephony 接口的服务端。
private void getPhoneService(boolean forceRefresh)
{
mPhoneService = ITelephony.Stub.asInterface(ServiceManager.getService(PhoneFactory
.getServiceName("phone", getPhoneId())));
}
7. PhoneInterfaceManager.java-> enableApnType():
public int enableApnType(String type)
{
enforceModifyPermission();
return mPhone.enableApnType(type); //8
}
其中,mPhone 是 PhoneProxy 对象。这样,就将连接 apn 的请求发送到 telephony 框架
层下去了。apn 在设置应用里面有里面指定了,一般在工程目录下的 system/etc/apns-
conf.xml 文件。
第三部分:Telephony 部分
8. PhoneProxy.java-> enableApnType():
public int enableApnType(String type)
{
return mActivePhone.enableApnType(type); //9
}
其中,mActivePhone 是 GSMPhone 或者 CDMAPhone 的上溯接口 PhoneBase 对象。
9.PhoneBase.java-> enableApnType():
public DataConnectionTracker mDataConnection;
public int enableApnType(String type)
{
return mDataConnection.enableApnType(type); //10
}
10. DataConnectionTracker.java-> enableApnType():
public synchronized int enableApnType(String type)
{
……
setEnabled(id, true); //11