RTT changes for ignoring user-set setting
Check the carrier config for the ignore user-set RTT mode flag. If it's
on, don't propogate the user-set RTT mode setting to the subscription
that it's on for, and always return from isRttEnabled as if the user-set
RTT mode setting were on.
Bug: 136035164
Test: manual
Change-Id: I8039ba8061b83e315af7fb7007253978f9544100
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 073606f..e1a9592 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -5320,14 +5320,19 @@
}
/**
- * Determines whether the user has turned on RTT. Only returns true if the device and carrier
- * both also support RTT.
+ * Determines whether the user has turned on RTT. If the carrier wants to ignore the user-set
+ * RTT setting, will return true if the device and carrier both support RTT.
+ * Otherwise. only returns true if the device and carrier both also support RTT.
*/
public boolean isRttEnabled(int subscriptionId) {
final long identity = Binder.clearCallingIdentity();
try {
- return isRttSupported(subscriptionId) && Settings.Secure.getInt(
+ boolean isRttSupported = isRttSupported(subscriptionId);
+ boolean isUserRttSettingOn = Settings.Secure.getInt(
mApp.getContentResolver(), Settings.Secure.RTT_CALLING_MODE, 0) != 0;
+ boolean shouldIgnoreUserRttSetting = mApp.getCarrierConfigForSubId(subscriptionId)
+ .getBoolean(CarrierConfigManager.KEY_IGNORE_RTT_MODE_SETTING_BOOL);
+ return isRttSupported && (isUserRttSettingOn || shouldIgnoreUserRttSetting);
} finally {
Binder.restoreCallingIdentity(identity);
}
diff --git a/src/com/android/phone/settings/AccessibilitySettingsFragment.java b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
index cff9c0a..b074f20 100644
--- a/src/com/android/phone/settings/AccessibilitySettingsFragment.java
+++ b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
@@ -160,10 +160,16 @@
int rttMode = mButtonRtt.isChecked() ? 1 : 0;
Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.RTT_CALLING_MODE,
rttMode);
- // Update RTT config with IMS Manager
- ImsManager imsManager = ImsManager.getInstance(getContext(),
- SubscriptionManager.getDefaultVoicePhoneId());
- imsManager.setRttEnabled(mButtonRtt.isChecked());
+ // Update RTT config with IMS Manager if the always-on carrier config isn't set to true.
+ CarrierConfigManager configManager = (CarrierConfigManager) mContext.getSystemService(
+ Context.CARRIER_CONFIG_SERVICE);
+ for (int subId : SubscriptionController.getInstance().getActiveSubIdList(true)) {
+ if (!configManager.getConfigForSubId(subId).getBoolean(
+ CarrierConfigManager.KEY_IGNORE_RTT_MODE_SETTING_BOOL, false)) {
+ ImsManager imsManager = ImsManager.getInstance(getContext(), subId);
+ imsManager.setRttEnabled(mButtonRtt.isChecked());
+ }
+ }
return true;
}
@@ -193,18 +199,23 @@
}
private boolean shouldShowRttSetting() {
- int subscriptionId = SubscriptionManager.getDefaultVoiceSubscriptionId();
- if (subscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID
- || subscriptionId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) {
- for (int subId : SubscriptionController.getInstance().getActiveSubIdList(true)) {
- if (PhoneGlobals.getInstance().phoneMgr.isRttSupported(subId)) {
+ CarrierConfigManager configManager =
+ (CarrierConfigManager) mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ // Go through all the subs -- if we want to display the RTT setting for any of them, do
+ // display it.
+ for (int subId : SubscriptionController.getInstance().getActiveSubIdList(true)) {
+ // In order to display the setting, we want:
+ // 1. The subscription supports RTT
+ // 2. The subscription isn't configured by the carrier to have the setting always-on
+ // (see the documentation for the carrier config key)
+ if (PhoneGlobals.getInstance().phoneMgr.isRttSupported(subId)) {
+ if (!configManager.getConfigForSubId(subId).getBoolean(
+ CarrierConfigManager.KEY_IGNORE_RTT_MODE_SETTING_BOOL, false)) {
return true;
}
}
- return false;
- } else {
- return PhoneGlobals.getInstance().phoneMgr.isRttSupported(subscriptionId);
}
+ return false;
}
/**