summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Ventura <joaojonesventura@gmail.com>2012-11-08 23:29:40 +0000
committerGerrit Code Review <gerrit@review.cyanogenmod.com>2012-11-09 11:26:29 -0800
commit1a599e82f20c32622f9c2b802ddfdfec696158d6 (patch)
tree8997f773ca5463817005709d8ba50d63aa007b35
parent749ded08894ea2ab27e74a7d4da03dcbeb15fc54 (diff)
downloadandroid_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.java19
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java40
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);