Loading res/values/strings.xml +9 −3 Original line number Diff line number Diff line Loading @@ -6842,12 +6842,12 @@ <!-- Title of a preference for whether to allow data during calls that is shown when mobile data is turned off. This is needed for some multi-SIM scenarios, because the SIM that is default for data might not be available during a phone call. [CHAR LIMIT=60] --> <string name="data_during_calls_title">Data during calls</string> <string name="auto_data_switch_title">Switch mobile data automatically</string> <!-- Title of a preference for whether to allow data during calls that is shown when mobile data is turned off. This is needed for some multi-SIM scenarios, because the SIM that is default for data might not be available during a phone call. [CHAR LIMIT=NONE] --> <string name="data_during_calls_summary"> Allow this SIM to be used for mobile data only during calls <string name="auto_data_switch_summary"> Temporarily use this network when it has better availability for calls and internet </string> <!-- Work SIM title. [CHAR LIMIT=50] --> Loading Loading @@ -11395,6 +11395,12 @@ <!-- Provider Model: Summary indicating that a SIM has an active mobile data connection [CHAR LIMIT=50] --> <string name="mobile_data_connection_active">Connected</string> <!-- Provider Model: Summary indicating that a SIM has an active mobile data connection [CHAR LIMIT=50] --> <string name="mobile_data_temp_connection_active">Temporarily connected</string> <!-- Provider Model: Summary indicating that a SIM is temporarily connected to mobile data [CHAR LIMIT=50] --> <string name="mobile_data_temp_using">Temporarily using <xliff:g id="subName" example="Google Fi">%1$s</xliff:g></string> <!-- Provider Model: Summary indicating that a active SIM and no network available [CHAR LIMIT=50] --> <string name="mobile_data_no_connection">No connection</string> res/xml/mobile_network_settings.xml +6 −6 Original line number Diff line number Diff line Loading @@ -59,6 +59,12 @@ settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController" settings:allowDividerAbove="true"/> <SwitchPreference android:key="auto_data_switch" android:title="@string/auto_data_switch_title" android:summary="@string/auto_data_switch_summary" settings:controller="com.android.settings.network.telephony.AutoDataSwitchPreferenceController"/> <com.android.settingslib.RestrictedSwitchPreference android:key="button_roaming_key" android:title="@string/roaming" Loading Loading @@ -96,12 +102,6 @@ android:summary="@string/mms_message_summary" settings:controller="com.android.settings.network.telephony.MmsMessagePreferenceController"/> <SwitchPreference android:key="data_during_calls" android:title="@string/data_during_calls_title" android:summary="@string/data_during_calls_summary" settings:controller="com.android.settings.network.telephony.DataDuringCallsPreferenceController"/> <SwitchPreference android:key="enhanced_4g_lte" android:title="@string/enhanced_4g_lte_mode_title" Loading src/com/android/settings/network/InternetPreferenceController.java +14 −3 Original line number Diff line number Diff line Loading @@ -192,11 +192,22 @@ public class InternetPreferenceController extends AbstractPreferenceController i if (subscriptionManager == null) { return; } SubscriptionInfo subInfo = subscriptionManager.getDefaultDataSubscriptionInfo(); SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfo( SubscriptionManager.getActiveDataSubscriptionId()); SubscriptionInfo defaultSubInfo = subscriptionManager.getDefaultDataSubscriptionInfo(); subInfo = subscriptionManager.isSubscriptionVisible(subInfo) ? subInfo : defaultSubInfo; if (subInfo == null) { return; } mPreference.setSummary(SubscriptionUtil.getUniqueSubscriptionDisplayName( subInfo, mContext)); CharSequence summary; if (subInfo.equals(defaultSubInfo)) { // DDS is active summary = SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext); } else { summary = mContext.getString( R.string.mobile_data_temp_using, SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext)); } mPreference.setSummary(summary); } } src/com/android/settings/network/SubscriptionsPreferenceController.java +23 −6 Original line number Diff line number Diff line Loading @@ -220,7 +220,11 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl return; } SubscriptionInfo subInfo = mSubscriptionManager.getDefaultDataSubscriptionInfo(); // Prefer using the currently active sub SubscriptionInfo subInfoCandidate = mSubscriptionManager.getActiveSubscriptionInfo( SubscriptionManager.getActiveDataSubscriptionId()); SubscriptionInfo subInfo = mSubscriptionManager.isSubscriptionVisible(subInfoCandidate) ? subInfoCandidate : mSubscriptionManager.getDefaultDataSubscriptionInfo(); if (subInfo == null) { mPreferenceGroup.removeAll(); return; Loading Loading @@ -255,9 +259,17 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mUpdateListener.onChildrenUpdated(); } /**@return {@code true} if subId is the default data sub. **/ private boolean isDds(int subId) { return mSubscriptionManager.getDefaultDataSubscriptionInfo() != null && mSubscriptionManager.getDefaultDataSubscriptionInfo().getSubscriptionId() == subId; } private CharSequence getMobilePreferenceSummary(int subId) { final TelephonyManager tmForSubId = mTelephonyManager.createForSubscriptionId(subId); if (!tmForSubId.isDataEnabled()) { boolean isDds = isDds(subId); if (!tmForSubId.isDataEnabled() && isDds) { return mContext.getString(R.string.mobile_data_off_summary); } final ServiceState serviceState = tmForSubId.getServiceState(); Loading @@ -275,10 +287,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mContext, mConfig, mTelephonyDisplayInfo, subId, isCarrierNetworkActive); if (mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext) || isCarrierNetworkActive) { if (result.isEmpty()) { result = mContext.getString(R.string.mobile_data_connection_active); result = mContext.getString(isDds ? R.string.mobile_data_connection_active : R.string.mobile_data_temp_connection_active); } else { result = mContext.getString(R.string.preference_summary_default_combination, mContext.getString(R.string.mobile_data_connection_active), result); mContext.getString(isDds ? R.string.mobile_data_connection_active : R.string.mobile_data_temp_connection_active), result); } } else if (!isDataInService) { result = mContext.getString(R.string.mobile_data_no_connection); Loading Loading @@ -316,9 +330,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final boolean isVoiceInService = (serviceState == null) ? false : (serviceState.getState() == ServiceState.STATE_IN_SERVICE); final boolean isDataEnabled = tmForSubId.isDataEnabled() // non-Dds but auto data switch feature is enabled || (!isDds(subId) && tmForSubId.isMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)); if (isDataInService || isVoiceInService || isCarrierNetworkActive) { icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, !tmForSubId.isDataEnabled()); icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, !isDataEnabled); } final boolean isActiveCellularNetwork = Loading src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java→src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java +15 −5 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License * limitations under the License. */ package com.android.settings.network.telephony; Loading @@ -36,7 +36,17 @@ import com.android.settings.datausage.DataUsageUtils; import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.SubscriptionsChangeListener; public class DataDuringCallsPreferenceController extends TelephonyTogglePreferenceController /** * Controls whether switch mobile data to the non-default SIM if the non-default SIM has better * availability. * * This is used for temporarily allowing data on the non-default data SIM when on-default SIM * has better availability on DSDS devices, where better availability means strong * signal/connectivity. * If this feature is enabled, data will be temporarily enabled on the non-default data SIM, * including during any voice calls. */ public class AutoDataSwitchPreferenceController extends TelephonyTogglePreferenceController implements LifecycleObserver, SubscriptionsChangeListener.SubscriptionsChangeListenerClient { Loading @@ -46,7 +56,7 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen private MobileDataContentObserver mMobileDataContentObserver; private PreferenceScreen mScreen; public DataDuringCallsPreferenceController(Context context, public AutoDataSwitchPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } Loading Loading @@ -90,13 +100,13 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @Override public boolean isChecked() { return mManager.isMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL); TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH); } @Override public boolean setChecked(boolean isChecked) { mManager.setMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL, TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH, isChecked); return true; } Loading Loading
res/values/strings.xml +9 −3 Original line number Diff line number Diff line Loading @@ -6842,12 +6842,12 @@ <!-- Title of a preference for whether to allow data during calls that is shown when mobile data is turned off. This is needed for some multi-SIM scenarios, because the SIM that is default for data might not be available during a phone call. [CHAR LIMIT=60] --> <string name="data_during_calls_title">Data during calls</string> <string name="auto_data_switch_title">Switch mobile data automatically</string> <!-- Title of a preference for whether to allow data during calls that is shown when mobile data is turned off. This is needed for some multi-SIM scenarios, because the SIM that is default for data might not be available during a phone call. [CHAR LIMIT=NONE] --> <string name="data_during_calls_summary"> Allow this SIM to be used for mobile data only during calls <string name="auto_data_switch_summary"> Temporarily use this network when it has better availability for calls and internet </string> <!-- Work SIM title. [CHAR LIMIT=50] --> Loading Loading @@ -11395,6 +11395,12 @@ <!-- Provider Model: Summary indicating that a SIM has an active mobile data connection [CHAR LIMIT=50] --> <string name="mobile_data_connection_active">Connected</string> <!-- Provider Model: Summary indicating that a SIM has an active mobile data connection [CHAR LIMIT=50] --> <string name="mobile_data_temp_connection_active">Temporarily connected</string> <!-- Provider Model: Summary indicating that a SIM is temporarily connected to mobile data [CHAR LIMIT=50] --> <string name="mobile_data_temp_using">Temporarily using <xliff:g id="subName" example="Google Fi">%1$s</xliff:g></string> <!-- Provider Model: Summary indicating that a active SIM and no network available [CHAR LIMIT=50] --> <string name="mobile_data_no_connection">No connection</string>
res/xml/mobile_network_settings.xml +6 −6 Original line number Diff line number Diff line Loading @@ -59,6 +59,12 @@ settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController" settings:allowDividerAbove="true"/> <SwitchPreference android:key="auto_data_switch" android:title="@string/auto_data_switch_title" android:summary="@string/auto_data_switch_summary" settings:controller="com.android.settings.network.telephony.AutoDataSwitchPreferenceController"/> <com.android.settingslib.RestrictedSwitchPreference android:key="button_roaming_key" android:title="@string/roaming" Loading Loading @@ -96,12 +102,6 @@ android:summary="@string/mms_message_summary" settings:controller="com.android.settings.network.telephony.MmsMessagePreferenceController"/> <SwitchPreference android:key="data_during_calls" android:title="@string/data_during_calls_title" android:summary="@string/data_during_calls_summary" settings:controller="com.android.settings.network.telephony.DataDuringCallsPreferenceController"/> <SwitchPreference android:key="enhanced_4g_lte" android:title="@string/enhanced_4g_lte_mode_title" Loading
src/com/android/settings/network/InternetPreferenceController.java +14 −3 Original line number Diff line number Diff line Loading @@ -192,11 +192,22 @@ public class InternetPreferenceController extends AbstractPreferenceController i if (subscriptionManager == null) { return; } SubscriptionInfo subInfo = subscriptionManager.getDefaultDataSubscriptionInfo(); SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfo( SubscriptionManager.getActiveDataSubscriptionId()); SubscriptionInfo defaultSubInfo = subscriptionManager.getDefaultDataSubscriptionInfo(); subInfo = subscriptionManager.isSubscriptionVisible(subInfo) ? subInfo : defaultSubInfo; if (subInfo == null) { return; } mPreference.setSummary(SubscriptionUtil.getUniqueSubscriptionDisplayName( subInfo, mContext)); CharSequence summary; if (subInfo.equals(defaultSubInfo)) { // DDS is active summary = SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext); } else { summary = mContext.getString( R.string.mobile_data_temp_using, SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext)); } mPreference.setSummary(summary); } }
src/com/android/settings/network/SubscriptionsPreferenceController.java +23 −6 Original line number Diff line number Diff line Loading @@ -220,7 +220,11 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl return; } SubscriptionInfo subInfo = mSubscriptionManager.getDefaultDataSubscriptionInfo(); // Prefer using the currently active sub SubscriptionInfo subInfoCandidate = mSubscriptionManager.getActiveSubscriptionInfo( SubscriptionManager.getActiveDataSubscriptionId()); SubscriptionInfo subInfo = mSubscriptionManager.isSubscriptionVisible(subInfoCandidate) ? subInfoCandidate : mSubscriptionManager.getDefaultDataSubscriptionInfo(); if (subInfo == null) { mPreferenceGroup.removeAll(); return; Loading Loading @@ -255,9 +259,17 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mUpdateListener.onChildrenUpdated(); } /**@return {@code true} if subId is the default data sub. **/ private boolean isDds(int subId) { return mSubscriptionManager.getDefaultDataSubscriptionInfo() != null && mSubscriptionManager.getDefaultDataSubscriptionInfo().getSubscriptionId() == subId; } private CharSequence getMobilePreferenceSummary(int subId) { final TelephonyManager tmForSubId = mTelephonyManager.createForSubscriptionId(subId); if (!tmForSubId.isDataEnabled()) { boolean isDds = isDds(subId); if (!tmForSubId.isDataEnabled() && isDds) { return mContext.getString(R.string.mobile_data_off_summary); } final ServiceState serviceState = tmForSubId.getServiceState(); Loading @@ -275,10 +287,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl mContext, mConfig, mTelephonyDisplayInfo, subId, isCarrierNetworkActive); if (mSubsPrefCtrlInjector.isActiveCellularNetwork(mContext) || isCarrierNetworkActive) { if (result.isEmpty()) { result = mContext.getString(R.string.mobile_data_connection_active); result = mContext.getString(isDds ? R.string.mobile_data_connection_active : R.string.mobile_data_temp_connection_active); } else { result = mContext.getString(R.string.preference_summary_default_combination, mContext.getString(R.string.mobile_data_connection_active), result); mContext.getString(isDds ? R.string.mobile_data_connection_active : R.string.mobile_data_temp_connection_active), result); } } else if (!isDataInService) { result = mContext.getString(R.string.mobile_data_no_connection); Loading Loading @@ -316,9 +330,12 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl final boolean isVoiceInService = (serviceState == null) ? false : (serviceState.getState() == ServiceState.STATE_IN_SERVICE); final boolean isDataEnabled = tmForSubId.isDataEnabled() // non-Dds but auto data switch feature is enabled || (!isDds(subId) && tmForSubId.isMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)); if (isDataInService || isVoiceInService || isCarrierNetworkActive) { icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, !tmForSubId.isDataEnabled()); icon = mSubsPrefCtrlInjector.getIcon(mContext, level, numLevels, !isDataEnabled); } final boolean isActiveCellularNetwork = Loading
src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java→src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java +15 −5 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License * limitations under the License. */ package com.android.settings.network.telephony; Loading @@ -36,7 +36,17 @@ import com.android.settings.datausage.DataUsageUtils; import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.SubscriptionsChangeListener; public class DataDuringCallsPreferenceController extends TelephonyTogglePreferenceController /** * Controls whether switch mobile data to the non-default SIM if the non-default SIM has better * availability. * * This is used for temporarily allowing data on the non-default data SIM when on-default SIM * has better availability on DSDS devices, where better availability means strong * signal/connectivity. * If this feature is enabled, data will be temporarily enabled on the non-default data SIM, * including during any voice calls. */ public class AutoDataSwitchPreferenceController extends TelephonyTogglePreferenceController implements LifecycleObserver, SubscriptionsChangeListener.SubscriptionsChangeListenerClient { Loading @@ -46,7 +56,7 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen private MobileDataContentObserver mMobileDataContentObserver; private PreferenceScreen mScreen; public DataDuringCallsPreferenceController(Context context, public AutoDataSwitchPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } Loading Loading @@ -90,13 +100,13 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen @Override public boolean isChecked() { return mManager.isMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL); TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH); } @Override public boolean setChecked(boolean isChecked) { mManager.setMobileDataPolicyEnabled( TelephonyManager.MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL, TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH, isChecked); return true; } Loading