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

Commit ec8d42c9 authored by Fangyi Huang's avatar Fangyi Huang Committed by Shuo Qian
Browse files

[ALPS04424802] Fix isEmergencyNumber issue

[Detail]
Before check emergency number, AOSP only strip separators.
It will encounter following issues:
1. Uri number is treat as emergency number
2. Post dial string (like: 112,1) is not treat as emergency number
which is a valid emergency number.

[Solution]
Add Uri number check and pre-process post dial string before
check emergency number which is the same as android P.

Bug: 188458699
Change-Id: If2bf06c1107e2d434b7ae1e44756577b65c8d097
CR-Id: ALPS04424802
Feature: Call Control Framework
(cherry picked from commit 92c9387b51d11df3e76d66e81dfa2fa9e849ddb6)
parent 0c52bf1a
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -709,7 +709,16 @@ public class EmergencyNumberTracker extends Handler {
        if (number == null) {
            return false;
        }
        number = PhoneNumberUtils.stripSeparators(number);

        // Do not treat SIP address as emergency number
        if (PhoneNumberUtils.isUriNumber(number)) {
            return false;
        }

        // Strip the separators from the number before comparing it
        // to the list.
        number = PhoneNumberUtils.extractNetworkPortionAlt(number);

        if (!mEmergencyNumberListFromRadio.isEmpty()) {
            for (EmergencyNumber num : mEmergencyNumberList) {
                // According to com.android.i18n.phonenumbers.ShortNumberInfo, in
@@ -935,6 +944,9 @@ public class EmergencyNumberTracker extends Handler {
        // If the number passed in is null, just return false:
        if (number == null) return false;

        /// M: preprocess number for emergency check @{
        // Move following logic to isEmergencyNumber()

        // If the number passed in is a SIP address, return false, since the
        // concept of "emergency numbers" is only meaningful for calls placed
        // over the cell network.
@@ -942,13 +954,14 @@ public class EmergencyNumberTracker extends Handler {
        // since the whole point of extractNetworkPortionAlt() is to filter out
        // any non-dialable characters (which would turn 'abc911def@example.com'
        // into '911', for example.))
        if (PhoneNumberUtils.isUriNumber(number)) {
            return false;
        }
        //if (PhoneNumberUtils.isUriNumber(number)) {
        //    return false;
        //}

        // Strip the separators from the number before comparing it
        // to the list.
        number = PhoneNumberUtils.extractNetworkPortionAlt(number);
        //number = PhoneNumberUtils.extractNetworkPortionAlt(number);
        /// @}

        String emergencyNumbers = "";
        int slotId = SubscriptionController.getInstance().getSlotIndex(mPhone.getSubId());