Loading src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java +54 −0 Original line number Diff line number Diff line Loading @@ -19,10 +19,12 @@ package com.android.internal.telephony.dataconnection; import android.annotation.IntDef; import android.content.ContentResolver; import android.content.Context; import android.os.Handler; import android.os.RegistrantList; import android.os.SystemProperties; import android.provider.Settings; import android.telephony.CarrierConfigManager; import android.telephony.Rlog; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading Loading @@ -248,6 +250,58 @@ public class DataEnabledSettings { return retVal; } private String getRoamingDataSettingName() { // For single SIM phones, this is a per phone property. Or if it's invalid subId, we // read default setting. int subId = mPhone.getSubId(); if (TelephonyManager.getDefault().getSimCount() == 1 || !SubscriptionManager.isValidSubscriptionId(subId)) { return Settings.Global.DATA_ROAMING; } else { return Settings.Global.DATA_ROAMING + mPhone.getSubId(); } } public synchronized void setDataRoamingEnabled(boolean enabled) { localLog("setDataRoamingEnabled", enabled); // Make sure if value is not initialized, it gets overwritten by the target value. int uninitializedValue = -1; int currentValue = Settings.Global.getInt( mResolver, getRoamingDataSettingName(), uninitializedValue); int targetValue = (enabled ? 1 : 0); int subId = mPhone.getSubId(); if (currentValue != targetValue) { Settings.Global.putInt(mResolver, getRoamingDataSettingName(), targetValue); SubscriptionController.getInstance().setDataRoaming(targetValue, subId); // will trigger handleDataOnRoamingChange() through observer } } /** * Return current {@link android.provider.Settings.Global#DATA_ROAMING} value. */ public synchronized boolean getDataRoamingEnabled() { return (Settings.Global.getInt(mResolver, getMobileDataSettingName(), getDefaultDataRoamingEnabled() ? 1 : 0) != 0); } /** * get default values for {@link Settings.Global#DATA_ROAMING} * return {@code true} if either * {@link CarrierConfigManager#KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL} or * system property ro.com.android.dataroaming is set to true. otherwise return {@code false} */ public synchronized boolean getDefaultDataRoamingEnabled() { final CarrierConfigManager configMgr = (CarrierConfigManager) mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); boolean isDataRoamingEnabled = "true".equalsIgnoreCase(SystemProperties.get( "ro.com.android.dataroaming", "false")); isDataRoamingEnabled |= configMgr.getConfigForSubId(mPhone.getSubId()).getBoolean( CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL); return isDataRoamingEnabled; } private void notifyDataEnabledChanged(boolean enabled, int reason) { mOverallDataEnabledChangedRegistrants.notifyResult(new Pair<>(enabled, reason)); } Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +9 −58 Original line number Diff line number Diff line Loading @@ -2453,74 +2453,27 @@ public class DcTracker extends Handler { * Modify {@link android.provider.Settings.Global#DATA_ROAMING} value for user modification only */ public void setDataRoamingEnabledByUser(boolean enabled) { final int phoneSubId = mPhone.getSubId(); if (getDataRoamingEnabled() != enabled) { int roaming = enabled ? 1 : 0; // For single SIM phones, this is a per phone property. if (mTelephonyManager.getSimCount() == 1) { Settings.Global.putInt(mResolver, Settings.Global.DATA_ROAMING, roaming); mDataEnabledSettings.setDataRoamingEnabled(enabled); setDataRoamingFromUserAction(true); } else { Settings.Global.putInt(mResolver, Settings.Global.DATA_ROAMING + phoneSubId, roaming); } mSubscriptionManager.setDataRoaming(roaming, phoneSubId); // will trigger handleDataOnRoamingChange() through observer if (DBG) { log("setDataRoamingEnabledByUser: set phoneSubId=" + phoneSubId log("setDataRoamingEnabledByUser: set phoneSubId=" + mPhone.getSubId() + " isRoaming=" + enabled); } } else { if (DBG) { log("setDataRoamingEnabledByUser: unchanged phoneSubId=" + phoneSubId + " isRoaming=" + enabled); } } } /** * Return current {@link android.provider.Settings.Global#DATA_ROAMING} value. */ public boolean getDataRoamingEnabled() { boolean isDataRoamingEnabled; final int phoneSubId = mPhone.getSubId(); // For single SIM phones, this is a per phone property. if (mTelephonyManager.getSimCount() == 1) { isDataRoamingEnabled = Settings.Global.getInt(mResolver, Settings.Global.DATA_ROAMING, getDefaultDataRoamingEnabled() ? 1 : 0) != 0; } else { isDataRoamingEnabled = Settings.Global.getInt(mResolver, Settings.Global.DATA_ROAMING + phoneSubId, getDefaultDataRoamingEnabled() ? 1 : 0) != 0; } boolean isDataRoamingEnabled = mDataEnabledSettings.getDataRoamingEnabled(); if (VDBG) { log("getDataRoamingEnabled: phoneSubId=" + phoneSubId log("getDataRoamingEnabled: phoneSubId=" + mPhone.getSubId() + " isDataRoamingEnabled=" + isDataRoamingEnabled); } return isDataRoamingEnabled; } /** * get default values for {@link Settings.Global#DATA_ROAMING} * return {@code true} if either * {@link CarrierConfigManager#KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL} or * system property ro.com.android.dataroaming is set to true. otherwise return {@code false} */ private boolean getDefaultDataRoamingEnabled() { final CarrierConfigManager configMgr = (CarrierConfigManager) mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); boolean isDataRoamingEnabled = "true".equalsIgnoreCase(SystemProperties.get( "ro.com.android.dataroaming", "false")); isDataRoamingEnabled |= configMgr.getConfigForSubId(mPhone.getSubId()).getBoolean( CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL); return isDataRoamingEnabled; } /** * Set default value for {@link android.provider.Settings.Global#DATA_ROAMING} * if the setting is not from user actions. default value is based on carrier config and system Loading @@ -2543,10 +2496,8 @@ public class DcTracker extends Handler { useCarrierSpecificDefault = true; } if (useCarrierSpecificDefault) { boolean defaultVal = getDefaultDataRoamingEnabled(); log("setDefaultDataRoamingEnabled: " + setting + "default value: " + defaultVal); Settings.Global.putInt(mResolver, setting, defaultVal ? 1 : 0); mSubscriptionManager.setDataRoaming(defaultVal ? 1 : 0, mPhone.getSubId()); boolean defaultVal = mDataEnabledSettings.getDefaultDataRoamingEnabled(); mDataEnabledSettings.setDataRoamingEnabled(defaultVal); } } Loading Loading
src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java +54 −0 Original line number Diff line number Diff line Loading @@ -19,10 +19,12 @@ package com.android.internal.telephony.dataconnection; import android.annotation.IntDef; import android.content.ContentResolver; import android.content.Context; import android.os.Handler; import android.os.RegistrantList; import android.os.SystemProperties; import android.provider.Settings; import android.telephony.CarrierConfigManager; import android.telephony.Rlog; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading Loading @@ -248,6 +250,58 @@ public class DataEnabledSettings { return retVal; } private String getRoamingDataSettingName() { // For single SIM phones, this is a per phone property. Or if it's invalid subId, we // read default setting. int subId = mPhone.getSubId(); if (TelephonyManager.getDefault().getSimCount() == 1 || !SubscriptionManager.isValidSubscriptionId(subId)) { return Settings.Global.DATA_ROAMING; } else { return Settings.Global.DATA_ROAMING + mPhone.getSubId(); } } public synchronized void setDataRoamingEnabled(boolean enabled) { localLog("setDataRoamingEnabled", enabled); // Make sure if value is not initialized, it gets overwritten by the target value. int uninitializedValue = -1; int currentValue = Settings.Global.getInt( mResolver, getRoamingDataSettingName(), uninitializedValue); int targetValue = (enabled ? 1 : 0); int subId = mPhone.getSubId(); if (currentValue != targetValue) { Settings.Global.putInt(mResolver, getRoamingDataSettingName(), targetValue); SubscriptionController.getInstance().setDataRoaming(targetValue, subId); // will trigger handleDataOnRoamingChange() through observer } } /** * Return current {@link android.provider.Settings.Global#DATA_ROAMING} value. */ public synchronized boolean getDataRoamingEnabled() { return (Settings.Global.getInt(mResolver, getMobileDataSettingName(), getDefaultDataRoamingEnabled() ? 1 : 0) != 0); } /** * get default values for {@link Settings.Global#DATA_ROAMING} * return {@code true} if either * {@link CarrierConfigManager#KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL} or * system property ro.com.android.dataroaming is set to true. otherwise return {@code false} */ public synchronized boolean getDefaultDataRoamingEnabled() { final CarrierConfigManager configMgr = (CarrierConfigManager) mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); boolean isDataRoamingEnabled = "true".equalsIgnoreCase(SystemProperties.get( "ro.com.android.dataroaming", "false")); isDataRoamingEnabled |= configMgr.getConfigForSubId(mPhone.getSubId()).getBoolean( CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL); return isDataRoamingEnabled; } private void notifyDataEnabledChanged(boolean enabled, int reason) { mOverallDataEnabledChangedRegistrants.notifyResult(new Pair<>(enabled, reason)); } Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +9 −58 Original line number Diff line number Diff line Loading @@ -2453,74 +2453,27 @@ public class DcTracker extends Handler { * Modify {@link android.provider.Settings.Global#DATA_ROAMING} value for user modification only */ public void setDataRoamingEnabledByUser(boolean enabled) { final int phoneSubId = mPhone.getSubId(); if (getDataRoamingEnabled() != enabled) { int roaming = enabled ? 1 : 0; // For single SIM phones, this is a per phone property. if (mTelephonyManager.getSimCount() == 1) { Settings.Global.putInt(mResolver, Settings.Global.DATA_ROAMING, roaming); mDataEnabledSettings.setDataRoamingEnabled(enabled); setDataRoamingFromUserAction(true); } else { Settings.Global.putInt(mResolver, Settings.Global.DATA_ROAMING + phoneSubId, roaming); } mSubscriptionManager.setDataRoaming(roaming, phoneSubId); // will trigger handleDataOnRoamingChange() through observer if (DBG) { log("setDataRoamingEnabledByUser: set phoneSubId=" + phoneSubId log("setDataRoamingEnabledByUser: set phoneSubId=" + mPhone.getSubId() + " isRoaming=" + enabled); } } else { if (DBG) { log("setDataRoamingEnabledByUser: unchanged phoneSubId=" + phoneSubId + " isRoaming=" + enabled); } } } /** * Return current {@link android.provider.Settings.Global#DATA_ROAMING} value. */ public boolean getDataRoamingEnabled() { boolean isDataRoamingEnabled; final int phoneSubId = mPhone.getSubId(); // For single SIM phones, this is a per phone property. if (mTelephonyManager.getSimCount() == 1) { isDataRoamingEnabled = Settings.Global.getInt(mResolver, Settings.Global.DATA_ROAMING, getDefaultDataRoamingEnabled() ? 1 : 0) != 0; } else { isDataRoamingEnabled = Settings.Global.getInt(mResolver, Settings.Global.DATA_ROAMING + phoneSubId, getDefaultDataRoamingEnabled() ? 1 : 0) != 0; } boolean isDataRoamingEnabled = mDataEnabledSettings.getDataRoamingEnabled(); if (VDBG) { log("getDataRoamingEnabled: phoneSubId=" + phoneSubId log("getDataRoamingEnabled: phoneSubId=" + mPhone.getSubId() + " isDataRoamingEnabled=" + isDataRoamingEnabled); } return isDataRoamingEnabled; } /** * get default values for {@link Settings.Global#DATA_ROAMING} * return {@code true} if either * {@link CarrierConfigManager#KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL} or * system property ro.com.android.dataroaming is set to true. otherwise return {@code false} */ private boolean getDefaultDataRoamingEnabled() { final CarrierConfigManager configMgr = (CarrierConfigManager) mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); boolean isDataRoamingEnabled = "true".equalsIgnoreCase(SystemProperties.get( "ro.com.android.dataroaming", "false")); isDataRoamingEnabled |= configMgr.getConfigForSubId(mPhone.getSubId()).getBoolean( CarrierConfigManager.KEY_CARRIER_DEFAULT_DATA_ROAMING_ENABLED_BOOL); return isDataRoamingEnabled; } /** * Set default value for {@link android.provider.Settings.Global#DATA_ROAMING} * if the setting is not from user actions. default value is based on carrier config and system Loading @@ -2543,10 +2496,8 @@ public class DcTracker extends Handler { useCarrierSpecificDefault = true; } if (useCarrierSpecificDefault) { boolean defaultVal = getDefaultDataRoamingEnabled(); log("setDefaultDataRoamingEnabled: " + setting + "default value: " + defaultVal); Settings.Global.putInt(mResolver, setting, defaultVal ? 1 : 0); mSubscriptionManager.setDataRoaming(defaultVal ? 1 : 0, mPhone.getSubId()); boolean defaultVal = mDataEnabledSettings.getDefaultDataRoamingEnabled(); mDataEnabledSettings.setDataRoamingEnabled(defaultVal); } } Loading