diff options
author | João Ventura <joaojonesventura@gmail.com> | 2012-11-08 23:29:40 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.cyanogenmod.com> | 2012-11-09 11:26:29 -0800 |
commit | 1a599e82f20c32622f9c2b802ddfdfec696158d6 (patch) | |
tree | 8997f773ca5463817005709d8ba50d63aa007b35 | |
parent | 749ded08894ea2ab27e74a7d4da03dcbeb15fc54 (diff) | |
download | android_frameworks_base-1a599e82f20c32622f9c2b802ddfdfec696158d6.tar.gz android_frameworks_base-1a599e82f20c32622f9c2b802ddfdfec696158d6.tar.bz2 android_frameworks_base-1a599e82f20c32622f9c2b802ddfdfec696158d6.zip |
Mms auto-retrieval (1/2): framework
- Settings: Add auto-retrieval and auto-retrieval-on-roaming strings
- GsmDataConnectionTracker: Gets settings and auto-connects APN_TYPE_MMS
Patch set 2 : Fix NPE when the preference was not yet set to a defaulted
value
: Add @hide's
: Set proper defaults
Change-Id: I9c4ea47cd39cd017fba3d5b0649d0e84aaf78b4e
-rw-r--r-- | core/java/android/provider/Settings.java | 19 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java | 40 |
2 files changed, 56 insertions, 3 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 5a79cbf87a5..ee9bb69c622 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1317,6 +1317,23 @@ public final class Settings { */ public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2"; + /** + * Allows automatic retrieval of mms contents + * <p>Type: INT</p> + * 0 -- false + * 1 -- true + * @hide + */ + public static final String MMS_AUTO_RETRIEVAL = "mms_auto_retrieval"; + + /** + * Allows automatic retrieval of mms contents during roaming + * <p>Type: INT</p> + * 0 -- false + * 1 -- true + * @hide + */ + public static final String MMS_AUTO_RETRIEVAL_ON_ROAMING = "mms_auto_on_roaming"; /** * Determines whether remote devices may discover and/or connect to @@ -2918,6 +2935,8 @@ public final class Settings { WIFI_STATIC_NETMASK, WIFI_STATIC_DNS1, WIFI_STATIC_DNS2, + MMS_AUTO_RETRIEVAL, + MMS_AUTO_RETRIEVAL_ON_ROAMING, BLUETOOTH_DISCOVERABILITY, BLUETOOTH_DISCOVERABILITY_TIMEOUT, DIM_SCREEN, diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 0f0e2cb0610..6d47d0302ac 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -757,8 +757,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { boolean desiredPowerState = mPhone.getServiceStateTracker().getDesiredPowerState(); - if ((apnContext.getState() == State.IDLE || apnContext.getState() == State.SCANNING) && - isDataAllowed(apnContext) && getAnyDataEnabled() && !isEmergency()) { + if (canSetupData(apnContext)) { if (apnContext.getState() == State.IDLE) { ArrayList<ApnSetting> waitingApns = buildWaitingApns(apnContext.getApnType()); @@ -793,6 +792,41 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } } + /** + * Report on whether data connectivity can be setup for any APN. + * @param apnContext The apnContext + * @return boolean + */ + private boolean canSetupData(ApnContext apnContext) { + if (apnContext.getState() != State.IDLE && apnContext.getState() != State.SCANNING) { + return false; + } + + if (isDataAllowed(apnContext) && getAnyDataEnabled() && !isEmergency()) { + return true; + } + + // Get the MMS retrieval settings. Defaults to enabled with roaming disabled + final ContentResolver resolver = mPhone.getContext().getContentResolver(); + boolean mmsAutoRetrieval = Settings.System.getInt(resolver, + Settings.System.MMS_AUTO_RETRIEVAL, 1) == 1; + boolean mmsRetrievalRoaming = Settings.System.getInt(resolver, + Settings.System.MMS_AUTO_RETRIEVAL_ON_ROAMING, 0) == 1; + + // Allow automatic Mms connections if user has enabled it + if (mmsAutoRetrieval && apnContext.getApnType().equals(Phone.APN_TYPE_MMS)) { + // don't allow MMS connections while roaming if disabled + TelephonyManager tm = (TelephonyManager) + mPhone.getContext().getSystemService(Context.TELEPHONY_SERVICE); + if (tm.isNetworkRoaming() && !mmsRetrievalRoaming) { + return false; + } + return true; + } + + return false; + } + @Override // Disabled apn's still need avail/unavail notificiations - send them out protected void notifyOffApnsOfAvailability(String reason) { @@ -2494,7 +2528,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { + mPreferredApn.numeric + ":" + mPreferredApn); } if ((mPreferredApn.numeric.equals(operator) && mPreferredApn.canHandleType(requestedApnType)) && - (mPreferredApn.bearer == 0 || mPreferredApn.bearer == radioTech) && + (mPreferredApn.bearer == 0 || mPreferredApn.bearer == radioTech) && !apnList.contains(mPreferredApn)) { apnList.add(mPreferredApn); |