diff options
| author | 2024-01-10 23:49:23 +0000 | |
|---|---|---|
| committer | 2024-01-10 23:49:23 +0000 | |
| commit | 70520367e323720c5c609a2a55fc67b91c785f69 (patch) | |
| tree | ad4863eba42ebf021f4cbaee4d33f97c8bb25ff6 /location/java | |
| parent | c53638534b40c32fc1642ac4d48782c1ca6fc1b4 (diff) | |
| parent | ca96bf69b827629570a1541e621072e958053a03 (diff) | |
Merge "Data only device(without FEATURE_TELEPHON_CALLING) : Add try/catch to handle UnsupportedOperationException" into main
Diffstat (limited to 'location/java')
| -rw-r--r-- | location/java/com/android/internal/location/GpsNetInitiatedHandler.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java index ee2510ff9695..0d5af50d08b5 100644 --- a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java +++ b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java @@ -19,6 +19,7 @@ package com.android.internal.location; import android.Manifest; import android.annotation.RequiresPermission; import android.content.Context; +import android.content.pm.PackageManager; import android.location.LocationManager; import android.os.SystemClock; import android.telephony.TelephonyCallback; @@ -26,6 +27,8 @@ import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; import android.util.Log; +import com.android.internal.telephony.flags.Flags; + import java.util.concurrent.TimeUnit; /** @@ -139,8 +142,20 @@ public class GpsNetInitiatedHandler { (mCallEndElapsedRealtimeMillis > 0) && ((SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis) < emergencyExtensionMillis); - boolean isInEmergencyCallback = mTelephonyManager.getEmergencyCallbackMode(); - boolean isInEmergencySmsMode = mTelephonyManager.isInEmergencySmsMode(); + boolean isInEmergencyCallback = false; + boolean isInEmergencySmsMode = false; + if (!Flags.enforceTelephonyFeatureMappingForPublicApis()) { + isInEmergencyCallback = mTelephonyManager.getEmergencyCallbackMode(); + isInEmergencySmsMode = mTelephonyManager.isInEmergencySmsMode(); + } else { + PackageManager pm = mContext.getPackageManager(); + if (pm != null && pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CALLING)) { + isInEmergencyCallback = mTelephonyManager.getEmergencyCallbackMode(); + } + if (pm != null && pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_MESSAGING)) { + isInEmergencySmsMode = mTelephonyManager.isInEmergencySmsMode(); + } + } return mIsInEmergencyCall || isInEmergencyCallback || isInEmergencyExtension || isInEmergencySmsMode; } |