diff options
| author | 2024-07-23 13:57:03 -0700 | |
|---|---|---|
| committer | 2025-03-04 17:15:21 -0800 | |
| commit | 5b67dbb1e43699759d454b2a86b491508654fc13 (patch) | |
| tree | 016c818fefd9dc8baff6581432c6fec78e78ec15 | |
| parent | 204bcfcadbdd8be0255b1522934517d82cd06e51 (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
Merged-In: I62a6b6d729849b79aef093eb3e2e3a16180c99c3
| -rw-r--r-- | services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java | 2 | ||||
| -rw-r--r-- | telecomm/java/android/telecom/CallerInfoAsyncQuery.java | 14 |
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; |