From 0badd0b700ed618dac421cb6cde4654b51acb3a4 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 24 Aug 2009 15:44:55 -0700 Subject: [PATCH] Note net availability even when apn not enabled Fixes a problem where mms apn was on when we lost the network (airplane mode) but mms was off when airplane mode was turned off so it kept thinking we didn't have access and future mms always failed. bug: 2075145 --- core/java/android/net/MobileDataStateTracker.java | 4 +++- .../com/android/internal/telephony/DataConnectionTracker.java | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java index b1421d12657cc..f88fcdcd9c602 100644 --- a/core/java/android/net/MobileDataStateTracker.java +++ b/core/java/android/net/MobileDataStateTracker.java @@ -147,7 +147,10 @@ public class MobileDataStateTracker extends NetworkStateTracker { ", unavailable = " + unavailable + ", reason = " + (reason == null ? "(unspecified)" : reason)); + if (isApnTypeIncluded(apnTypeList)) { + // set this even if the apn isn't Enabled + mNetworkInfo.setIsAvailable(!unavailable); if (mEnabled == false) { // if we're not enabled but the APN Type is supported by this connection // we should record the interface name if one's provided. If the user @@ -168,7 +171,6 @@ public class MobileDataStateTracker extends NetworkStateTracker { return; } - mNetworkInfo.setIsAvailable(!unavailable); if (mMobileDataState != state) { mMobileDataState = state; switch (state) { diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index e187c37f4e376..cfb465efeca63 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -453,7 +453,8 @@ public abstract class DataConnectionTracker extends Handler { } protected synchronized void setEnabled(int id, boolean enable) { - if (DBG) Log.d(LOG_TAG, "setEnabled(" + id + ", " + enable + ')'); + if (DBG) Log.d(LOG_TAG, "setEnabled(" + id + ", " + enable + ") with old state = " + + dataEnabled[id] + " and enabledCount = " + enabledCount); if (dataEnabled[id] != enable) { dataEnabled[id] = enable;