Revert "Use TelephonyManager#isEmergencyNumber() instead"

Revert submission 1453740-replace_with_isEmergencyNumber

Reason for revert: <Telephony service may not up while calling this, causing failures.>

This also cherry picks ag/14444738

Change-Id: I5aa71917ce1b2abcdfcf78b8988d128982a6b3ec
Bug: 132703886
Bug: 181062609
Bug: 187720309
Merged-In: I5df03a61f55f863e17594aa3239433a5048a4890
This commit is contained in:
Shuo Qian
2021-05-10 22:54:23 +00:00
parent b40a55ccc9
commit 68417637dd
3 changed files with 13 additions and 4 deletions

View File

@@ -28,6 +28,7 @@ import android.location.LocationManager;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.telephony.PhoneNumberUtils;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
@@ -160,7 +161,7 @@ public class GpsNetInitiatedHandler {
be set to true when the phone is having emergency call, and then will
be set to false by mPhoneStateListener when the emergency call ends.
*/
mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber(phoneNumber);
mIsInEmergencyCall = PhoneNumberUtils.isEmergencyNumber(phoneNumber);
if (DEBUG) Log.v(TAG, "ACTION_NEW_OUTGOING_CALL - " + getInEmergency());
} else if (action.equals(LocationManager.MODE_CHANGED_ACTION)) {
updateLocationMode();

View File

@@ -405,8 +405,7 @@ public class CallerInfo {
// Change the callerInfo number ONLY if it is an emergency number
// or if it is the voicemail number. If it is either, take a
// shortcut and skip the query.
TelephonyManager tm = context.getSystemService(TelephonyManager.class);
if (tm.isEmergencyNumber(number)) {
if (PhoneNumberUtils.isLocalEmergencyNumber(context, number)) {
return new CallerInfo().markAsEmergency(context);
} else if (PhoneNumberUtils.isVoiceMailNumber(null, subId, number)) {
return new CallerInfo().markAsVoiceMail(context, subId);

View File

@@ -483,7 +483,16 @@ public class CallerInfoAsyncQuery {
// check to see if these are recognized numbers, and use shortcuts if we can.
TelephonyManager tm = context.getSystemService(TelephonyManager.class);
if (tm.isEmergencyNumber(number)) {
boolean isEmergencyNumber = false;
try {
isEmergencyNumber = tm.isEmergencyNumber(number);
} catch (IllegalStateException 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)
isEmergencyNumber = PhoneNumberUtils.isLocalEmergencyNumber(context, number);
}
if (isEmergencyNumber) {
cw.event = EVENT_EMERGENCY_NUMBER;
} else if (PhoneNumberUtils.isVoiceMailNumber(context, subId, number)) {
cw.event = EVENT_VOICEMAIL_NUMBER;