Loading src/com/android/server/telecom/Call.java +18 −7 Original line number Diff line number Diff line Loading @@ -1175,8 +1175,14 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, // Let's not allow resetting of the emergency flag. Once a call becomes an emergency // call, it will remain so for the rest of it's lifetime. if (!mIsEmergencyCall) { try { mIsEmergencyCall = mHandle != null && getTelephonyManager().isEmergencyNumber(mHandle.getSchemeSpecificPart()); getTelephonyManager().isEmergencyNumber( mHandle.getSchemeSpecificPart()); } catch (IllegalStateException ise) { Log.e(this, ise, "setHandle: can't determine if number is emergency"); mIsEmergencyCall = false; } mAnalytics.setCallIsEmergency(mIsEmergencyCall); } if (!mIsTestEmergencyCall) { Loading @@ -1191,11 +1197,16 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, } private boolean isTestEmergencyCall(String number) { Map<Integer, List<EmergencyNumber>> eMap = getTelephonyManager().getEmergencyNumberList(); try { Map<Integer, List<EmergencyNumber>> eMap = getTelephonyManager().getEmergencyNumberList(); return eMap.values().stream().flatMap(Collection::stream) .anyMatch(eNumber -> eNumber.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_TEST) && number.equals(eNumber.getNumber())); } catch (IllegalStateException ise) { return false; } } public String getCallerDisplayName() { Loading src/com/android/server/telecom/CallsManager.java +11 −3 Original line number Diff line number Diff line Loading @@ -1960,13 +1960,22 @@ public class CallsManager extends Call.ListenerBase boolean endEarly = false; String disconnectReason = ""; String callRedirectionApp = mRoleManagerAdapter.getDefaultCallRedirectionApp(); boolean isPotentialEmergencyNumber; try { isPotentialEmergencyNumber = handle != null && getTelephonyManager().isPotentialEmergencyNumber( handle.getSchemeSpecificPart()); } catch (IllegalStateException ise) { isPotentialEmergencyNumber = false; } if (shouldCancelCall) { Log.w(this, "onCallRedirectionComplete: call is canceled"); endEarly = true; disconnectReason = "Canceled from Call Redirection Service"; // Show UX when user-defined call redirection service does not response; the UX // is not needed to show if the call is disconnected (e.g. by the user) if (uiAction.equals(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT) Loading @@ -1987,8 +1996,7 @@ public class CallsManager extends Call.ListenerBase Log.w(this, "onCallRedirectionComplete: phoneAccountHandle is null"); endEarly = true; disconnectReason = "Null phoneAccountHandle from Call Redirection Service"; } else if (getTelephonyManager().isPotentialEmergencyNumber( handle.getSchemeSpecificPart())) { } else if (isPotentialEmergencyNumber) { Log.w(this, "onCallRedirectionComplete: emergency number %s is redirected from Call" + " Redirection Service", handle.getSchemeSpecificPart()); endEarly = true; Loading src/com/android/server/telecom/TelephonyUtil.java +7 −3 Original line number Diff line number Diff line Loading @@ -70,8 +70,12 @@ public final class TelephonyUtil { } public static boolean shouldProcessAsEmergency(Context context, Uri handle) { try { TelephonyManager tm = (TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE); return handle != null && tm.isEmergencyNumber(handle.getSchemeSpecificPart()); } catch (IllegalStateException ise) { return false; } } } Loading
src/com/android/server/telecom/Call.java +18 −7 Original line number Diff line number Diff line Loading @@ -1175,8 +1175,14 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, // Let's not allow resetting of the emergency flag. Once a call becomes an emergency // call, it will remain so for the rest of it's lifetime. if (!mIsEmergencyCall) { try { mIsEmergencyCall = mHandle != null && getTelephonyManager().isEmergencyNumber(mHandle.getSchemeSpecificPart()); getTelephonyManager().isEmergencyNumber( mHandle.getSchemeSpecificPart()); } catch (IllegalStateException ise) { Log.e(this, ise, "setHandle: can't determine if number is emergency"); mIsEmergencyCall = false; } mAnalytics.setCallIsEmergency(mIsEmergencyCall); } if (!mIsTestEmergencyCall) { Loading @@ -1191,11 +1197,16 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, } private boolean isTestEmergencyCall(String number) { Map<Integer, List<EmergencyNumber>> eMap = getTelephonyManager().getEmergencyNumberList(); try { Map<Integer, List<EmergencyNumber>> eMap = getTelephonyManager().getEmergencyNumberList(); return eMap.values().stream().flatMap(Collection::stream) .anyMatch(eNumber -> eNumber.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_TEST) && number.equals(eNumber.getNumber())); } catch (IllegalStateException ise) { return false; } } public String getCallerDisplayName() { Loading
src/com/android/server/telecom/CallsManager.java +11 −3 Original line number Diff line number Diff line Loading @@ -1960,13 +1960,22 @@ public class CallsManager extends Call.ListenerBase boolean endEarly = false; String disconnectReason = ""; String callRedirectionApp = mRoleManagerAdapter.getDefaultCallRedirectionApp(); boolean isPotentialEmergencyNumber; try { isPotentialEmergencyNumber = handle != null && getTelephonyManager().isPotentialEmergencyNumber( handle.getSchemeSpecificPart()); } catch (IllegalStateException ise) { isPotentialEmergencyNumber = false; } if (shouldCancelCall) { Log.w(this, "onCallRedirectionComplete: call is canceled"); endEarly = true; disconnectReason = "Canceled from Call Redirection Service"; // Show UX when user-defined call redirection service does not response; the UX // is not needed to show if the call is disconnected (e.g. by the user) if (uiAction.equals(CallRedirectionProcessor.UI_TYPE_USER_DEFINED_TIMEOUT) Loading @@ -1987,8 +1996,7 @@ public class CallsManager extends Call.ListenerBase Log.w(this, "onCallRedirectionComplete: phoneAccountHandle is null"); endEarly = true; disconnectReason = "Null phoneAccountHandle from Call Redirection Service"; } else if (getTelephonyManager().isPotentialEmergencyNumber( handle.getSchemeSpecificPart())) { } else if (isPotentialEmergencyNumber) { Log.w(this, "onCallRedirectionComplete: emergency number %s is redirected from Call" + " Redirection Service", handle.getSchemeSpecificPart()); endEarly = true; Loading
src/com/android/server/telecom/TelephonyUtil.java +7 −3 Original line number Diff line number Diff line Loading @@ -70,8 +70,12 @@ public final class TelephonyUtil { } public static boolean shouldProcessAsEmergency(Context context, Uri handle) { try { TelephonyManager tm = (TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE); return handle != null && tm.isEmergencyNumber(handle.getSchemeSpecificPart()); } catch (IllegalStateException ise) { return false; } } }