summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tomasz Wasilczyk <twasilczyk@google.com> 2024-07-23 13:57:03 -0700
committer Tomasz Wasilczyk <twasilczyk@google.com> 2024-08-01 04:11:42 -0700
commit373cca2006f4991141ca65c2691e54e2b3248e03 (patch)
tree7f77ac621dd987b9ead6f197d938538bcc279cbe
parentb547cb7f8c3e43aefba4f75ce19061aa2383af90 (diff)
Fix Telecom CTS crashes when checking for emergency/voicemail number
Bug: 355008150 Test: atest CtsTelecomTestCases Test: atest CtsTelecomTestCases3 Flag: EXEMPT bugfix Change-Id: I62a6b6d729849b79aef093eb3e2e3a16180c99c3
-rw-r--r--services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java2
-rw-r--r--telecomm/java/android/telecom/CallerInfoAsyncQuery.java14
2 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
index 5df0de83b567..df45a6ec985c 100644
--- a/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
+++ b/services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java
@@ -77,7 +77,7 @@ public class SystemEmergencyHelper extends EmergencyHelper {
mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber(
intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER));
dispatchEmergencyStateChanged();
- } catch (IllegalStateException e) {
+ } catch (IllegalStateException | UnsupportedOperationException e) {
Log.w(TAG, "Failed to call TelephonyManager.isEmergencyNumber().", e);
}
}
diff --git a/telecomm/java/android/telecom/CallerInfoAsyncQuery.java b/telecomm/java/android/telecom/CallerInfoAsyncQuery.java
index 93cd291aeea0..a03d7e25d4c5 100644
--- a/telecomm/java/android/telecom/CallerInfoAsyncQuery.java
+++ b/telecomm/java/android/telecom/CallerInfoAsyncQuery.java
@@ -483,18 +483,28 @@ public class CallerInfoAsyncQuery {
// check to see if these are recognized numbers, and use shortcuts if we can.
TelephonyManager tm = context.getSystemService(TelephonyManager.class);
+
boolean isEmergencyNumber = false;
try {
isEmergencyNumber = tm.isEmergencyNumber(number);
- } catch (IllegalStateException ise) {
+ } catch (IllegalStateException | UnsupportedOperationException ise) {
// Ignore the exception that Telephony is not up. Use PhoneNumberUtils API now.
// Ideally the PhoneNumberUtils API needs to be removed once the
// telphony service not up issue can be fixed (b/187412989)
+ // UnsupportedOperationException: telephony.calling may not be supported on this device
isEmergencyNumber = PhoneNumberUtils.isLocalEmergencyNumber(context, number);
}
+
+ boolean isVoicemailNumber;
+ try {
+ isVoicemailNumber = PhoneNumberUtils.isVoiceMailNumber(context, subId, number);
+ } catch (UnsupportedOperationException ex) {
+ isVoicemailNumber = false;
+ }
+
if (isEmergencyNumber) {
cw.event = EVENT_EMERGENCY_NUMBER;
- } else if (PhoneNumberUtils.isVoiceMailNumber(context, subId, number)) {
+ } else if (isVoicemailNumber) {
cw.event = EVENT_VOICEMAIL_NUMBER;
} else {
cw.event = EVENT_NEW_QUERY;