Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8681f6f5 authored by Tyler Gunn's avatar Tyler Gunn Committed by Automerger Merge Worker
Browse files

Handle TelephonyManager RuntimeExceptions to prevent Telecom crash. am: f696a7f2

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/14518715

Change-Id: I16409df33ea2491e77596d34a229da8394ff5f99
parents 6e170720 f696a7f2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1359,6 +1359,9 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
                } catch (IllegalStateException ise) {
                    Log.e(this, ise, "setHandle: can't determine if number is emergency");
                    mIsEmergencyCall = false;
                } catch (RuntimeException r) {
                    Log.e(this, r, "setHandle: can't determine if number is emergency");
                    mIsEmergencyCall = false;
                }
                mAnalytics.setCallIsEmergency(mIsEmergencyCall);
            }
@@ -1383,6 +1386,8 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
                                    number.equals(eNumber.getNumber()));
        } catch (IllegalStateException ise) {
            return false;
        } catch (RuntimeException r) {
            return false;
        }
    }

+2 −0
Original line number Diff line number Diff line
@@ -2064,6 +2064,8 @@ public class CallsManager extends Call.ListenerBase
                            handle.getSchemeSpecificPart());
        } catch (IllegalStateException ise) {
            isPotentialEmergencyNumber = false;
        } catch (RuntimeException r) {
            isPotentialEmergencyNumber = false;
        }

        if (shouldCancelCall) {
+11 −4
Original line number Diff line number Diff line
@@ -130,10 +130,17 @@ final class PhoneStateBroadcaster extends CallsManagerListenerBase {
        TelephonyManager tm = mCallsManager.getContext().getSystemService(TelephonyManager.class);
        String strippedNumber =
                PhoneNumberUtils.stripSeparators(call.getHandle().getSchemeSpecificPart());
        Optional<EmergencyNumber> emergencyNumber = tm.getEmergencyNumberList().values().stream()
        Optional<EmergencyNumber> emergencyNumber;
        try {
            emergencyNumber = tm.getEmergencyNumberList().values().stream()
                    .flatMap(List::stream)
                    .filter(numberObj -> Objects.equals(numberObj.getNumber(), strippedNumber))
                    .findFirst();
        } catch (IllegalStateException ie) {
            emergencyNumber = Optional.empty();
        } catch (RuntimeException r) {
            emergencyNumber = Optional.empty();
        }

        int subscriptionId = tm.getSubscriptionId(call.getTargetPhoneAccount());
        SubscriptionManager subscriptionManager =