Change requirements for emergency call timeout
Previously if a SIM call manager was set we allowed
emergency calls to timeout if:
- the device was not in service
- and the device was connected to Wi-Fi
- and a connection manager with a emergency capability
was registered
Unfortunately this prevented scenarios like making an
e911 call over LTE. This CL changes the requirements to
the following:
- a connection manager with a emergency capability
is registered
- and the connection manager was set by the carrier
Bug: 19199181
Bug: 23900801
Change-Id: I8fd05e88e3c02b90170b5809366b71627b2cfbd5
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index 65847b8..a795d6f 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -286,6 +286,19 @@
return getSimCallManager(user);
}
+ public ComponentName getSystemSimCallManagerComponent() {
+ String defaultSimCallManager = null;
+ CarrierConfigManager configManager = (CarrierConfigManager) mContext.getSystemService(
+ Context.CARRIER_CONFIG_SERVICE);
+ PersistableBundle configBundle = configManager.getConfig();
+ if (configBundle != null) {
+ defaultSimCallManager = configBundle.getString(
+ CarrierConfigManager.KEY_DEFAULT_SIM_CALL_MANAGER_STRING);
+ }
+ return TextUtils.isEmpty(defaultSimCallManager)
+ ? null : ComponentName.unflattenFromString(defaultSimCallManager);
+ }
+
/**
* Returns the {@link PhoneAccountHandle} corresponding to the currently active SIM Call
* Manager. SIM Call Manager returned corresponds to the following priority order:
@@ -300,17 +313,7 @@
String dialerPackage = DefaultDialerManager.getDefaultDialerApplication(mContext, user);
// Check carrier config.
- String defaultSimCallManager = null;
- CarrierConfigManager configManager = (CarrierConfigManager) mContext.getSystemService(
- Context.CARRIER_CONFIG_SERVICE);
- PersistableBundle configBundle = configManager.getConfig();
- if (configBundle != null) {
- defaultSimCallManager = configBundle.getString(
- CarrierConfigManager.KEY_DEFAULT_SIM_CALL_MANAGER_STRING);
- }
-
- ComponentName systemSimCallManagerComponent = TextUtils.isEmpty(defaultSimCallManager) ?
- null : ComponentName.unflattenFromString(defaultSimCallManager);
+ ComponentName systemSimCallManagerComponent = getSystemSimCallManagerComponent();
PhoneAccountHandle dialerSimCallManager = null;
PhoneAccountHandle systemSimCallManager = null;