diff options
3 files changed, 17 insertions, 9 deletions
diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java index 5112ba0..bdcf3f7 100644 --- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java @@ -156,6 +156,9 @@ public abstract class ServiceStateTracker extends Handler { } + public boolean getDesiredPowerState() { + return mDesiredPowerState; + } /** * Registration point for combined roaming on diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 761eb8b..bf58ab7 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -309,13 +309,11 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { Log.d(LOG_TAG, "setDataEnabled("+enable+") isEnabled=" + isEnabled); if (!isEnabled && enable) { setEnabled(EXTERNAL_NETWORK_DEFAULT_ID, true); - return trySetupData(Phone.REASON_DATA_ENABLED); + sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA)); } else if (!enable) { setEnabled(EXTERNAL_NETWORK_DEFAULT_ID, false); cleanUpConnection(true, Phone.REASON_DATA_DISABLED); - return true; - } else // isEnabled && enable - + } return true; } @@ -360,6 +358,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { int psState = mCdmaPhone.mSST.getCurrentCdmaDataConnectionState(); boolean roaming = phone.getServiceState().getRoaming(); + boolean desiredPowerState = mCdmaPhone.mSST.getDesiredPowerState(); if ((state == State.IDLE || state == State.SCANNING) && (psState == ServiceState.RADIO_TECHNOLOGY_1xRTT || @@ -369,7 +368,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { mCdmaPhone.mRuimRecords.getRecordsLoaded()) && (mCdmaPhone.mSST.isConcurrentVoiceAndData() || phone.getState() == Phone.State.IDLE ) - && isDataAllowed()) { + && isDataAllowed() + && desiredPowerState) { return setupData(reason); @@ -384,7 +384,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { " phoneState=" + phone.getState() + " dataEnabled=" + getAnyDataEnabled() + " roaming=" + roaming + - " dataOnRoamingEnable=" + getDataOnRoamingEnabled()); + " dataOnRoamingEnable=" + getDataOnRoamingEnabled() + + " desiredPowerState=" + desiredPowerState); } return false; } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 1d7aaf1..49e2daf 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -478,7 +478,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { setEnabled(Phone.APN_TYPE_DEFAULT, true); // trySetupData() will be a no-op if we are currently // connected to the MMS APN - return trySetupData(Phone.REASON_DATA_ENABLED); + sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA)); + return true; } else if (!enable) { setEnabled(Phone.APN_TYPE_DEFAULT, false); // 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(); boolean roaming = phone.getServiceState().getRoaming(); + boolean desiredPowerState = ((GSMPhone) phone).mSST.getDesiredPowerState(); if ((state == State.IDLE || state == State.SCANNING) && (gprsState == ServiceState.STATE_IN_SERVICE || noAutoAttach) @@ -586,7 +588,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { && ( ((GSMPhone) phone).mSST.isConcurrentVoiceAndData() || phone.getState() == Phone.State.IDLE ) && isDataAllowed() - && !mIsPsRestricted ) { + && !mIsPsRestricted + && desiredPowerState ) { if (state == State.IDLE) { waitingApns = buildWaitingApns(); @@ -614,7 +617,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { " dataEnabled=" + getAnyDataEnabled() + " roaming=" + roaming + " dataOnRoamingEnable=" + getDataOnRoamingEnabled() + - " ps restricted=" + mIsPsRestricted); + " ps restricted=" + mIsPsRestricted + + " desiredPowerState=" + desiredPowerState); return false; } } |