Check for desiredPowerState (airplane mode) before setting up data.
Check for airplane mode before trying to setup data. Send an event while switching from wifi to cell data, instead of calling trySetupData directly.
This commit is contained in:
@@ -156,6 +156,9 @@ public abstract class ServiceStateTracker extends Handler {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getDesiredPowerState() {
|
||||||
|
return mDesiredPowerState;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registration point for combined roaming on
|
* Registration point for combined roaming on
|
||||||
|
|||||||
@@ -309,13 +309,11 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
|||||||
Log.d(LOG_TAG, "setDataEnabled("+enable+") isEnabled=" + isEnabled);
|
Log.d(LOG_TAG, "setDataEnabled("+enable+") isEnabled=" + isEnabled);
|
||||||
if (!isEnabled && enable) {
|
if (!isEnabled && enable) {
|
||||||
setEnabled(EXTERNAL_NETWORK_DEFAULT_ID, true);
|
setEnabled(EXTERNAL_NETWORK_DEFAULT_ID, true);
|
||||||
return trySetupData(Phone.REASON_DATA_ENABLED);
|
sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
|
||||||
} else if (!enable) {
|
} else if (!enable) {
|
||||||
setEnabled(EXTERNAL_NETWORK_DEFAULT_ID, false);
|
setEnabled(EXTERNAL_NETWORK_DEFAULT_ID, false);
|
||||||
cleanUpConnection(true, Phone.REASON_DATA_DISABLED);
|
cleanUpConnection(true, Phone.REASON_DATA_DISABLED);
|
||||||
return true;
|
}
|
||||||
} else // isEnabled && enable
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,6 +358,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
|||||||
|
|
||||||
int psState = mCdmaPhone.mSST.getCurrentCdmaDataConnectionState();
|
int psState = mCdmaPhone.mSST.getCurrentCdmaDataConnectionState();
|
||||||
boolean roaming = phone.getServiceState().getRoaming();
|
boolean roaming = phone.getServiceState().getRoaming();
|
||||||
|
boolean desiredPowerState = mCdmaPhone.mSST.getDesiredPowerState();
|
||||||
|
|
||||||
if ((state == State.IDLE || state == State.SCANNING)
|
if ((state == State.IDLE || state == State.SCANNING)
|
||||||
&& (psState == ServiceState.RADIO_TECHNOLOGY_1xRTT ||
|
&& (psState == ServiceState.RADIO_TECHNOLOGY_1xRTT ||
|
||||||
@@ -369,7 +368,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
|||||||
mCdmaPhone.mRuimRecords.getRecordsLoaded())
|
mCdmaPhone.mRuimRecords.getRecordsLoaded())
|
||||||
&& (mCdmaPhone.mSST.isConcurrentVoiceAndData() ||
|
&& (mCdmaPhone.mSST.isConcurrentVoiceAndData() ||
|
||||||
phone.getState() == Phone.State.IDLE )
|
phone.getState() == Phone.State.IDLE )
|
||||||
&& isDataAllowed()) {
|
&& isDataAllowed()
|
||||||
|
&& desiredPowerState) {
|
||||||
|
|
||||||
return setupData(reason);
|
return setupData(reason);
|
||||||
|
|
||||||
@@ -384,7 +384,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
|||||||
" phoneState=" + phone.getState() +
|
" phoneState=" + phone.getState() +
|
||||||
" dataEnabled=" + getAnyDataEnabled() +
|
" dataEnabled=" + getAnyDataEnabled() +
|
||||||
" roaming=" + roaming +
|
" roaming=" + roaming +
|
||||||
" dataOnRoamingEnable=" + getDataOnRoamingEnabled());
|
" dataOnRoamingEnable=" + getDataOnRoamingEnabled() +
|
||||||
|
" desiredPowerState=" + desiredPowerState);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -478,7 +478,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
|||||||
setEnabled(Phone.APN_TYPE_DEFAULT, true);
|
setEnabled(Phone.APN_TYPE_DEFAULT, true);
|
||||||
// trySetupData() will be a no-op if we are currently
|
// trySetupData() will be a no-op if we are currently
|
||||||
// connected to the MMS APN
|
// connected to the MMS APN
|
||||||
return trySetupData(Phone.REASON_DATA_ENABLED);
|
sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
|
||||||
|
return true;
|
||||||
} else if (!enable) {
|
} else if (!enable) {
|
||||||
setEnabled(Phone.APN_TYPE_DEFAULT, false);
|
setEnabled(Phone.APN_TYPE_DEFAULT, false);
|
||||||
// Don't tear down if there is an active APN and it handles MMS or SUPL.
|
// Don't tear down if there is an active APN and it handles MMS or SUPL.
|
||||||
@@ -579,6 +580,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
|||||||
|
|
||||||
int gprsState = ((GSMPhone) phone).mSST.getCurrentGprsState();
|
int gprsState = ((GSMPhone) phone).mSST.getCurrentGprsState();
|
||||||
boolean roaming = phone.getServiceState().getRoaming();
|
boolean roaming = phone.getServiceState().getRoaming();
|
||||||
|
boolean desiredPowerState = ((GSMPhone) phone).mSST.getDesiredPowerState();
|
||||||
|
|
||||||
if ((state == State.IDLE || state == State.SCANNING)
|
if ((state == State.IDLE || state == State.SCANNING)
|
||||||
&& (gprsState == ServiceState.STATE_IN_SERVICE || noAutoAttach)
|
&& (gprsState == ServiceState.STATE_IN_SERVICE || noAutoAttach)
|
||||||
@@ -586,7 +588,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
|||||||
&& ( ((GSMPhone) phone).mSST.isConcurrentVoiceAndData() ||
|
&& ( ((GSMPhone) phone).mSST.isConcurrentVoiceAndData() ||
|
||||||
phone.getState() == Phone.State.IDLE )
|
phone.getState() == Phone.State.IDLE )
|
||||||
&& isDataAllowed()
|
&& isDataAllowed()
|
||||||
&& !mIsPsRestricted ) {
|
&& !mIsPsRestricted
|
||||||
|
&& desiredPowerState ) {
|
||||||
|
|
||||||
if (state == State.IDLE) {
|
if (state == State.IDLE) {
|
||||||
waitingApns = buildWaitingApns();
|
waitingApns = buildWaitingApns();
|
||||||
@@ -614,7 +617,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
|||||||
" dataEnabled=" + getAnyDataEnabled() +
|
" dataEnabled=" + getAnyDataEnabled() +
|
||||||
" roaming=" + roaming +
|
" roaming=" + roaming +
|
||||||
" dataOnRoamingEnable=" + getDataOnRoamingEnabled() +
|
" dataOnRoamingEnable=" + getDataOnRoamingEnabled() +
|
||||||
" ps restricted=" + mIsPsRestricted);
|
" ps restricted=" + mIsPsRestricted +
|
||||||
|
" desiredPowerState=" + desiredPowerState);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user