diff options
Diffstat (limited to 'location')
-rw-r--r-- | location/java/android/location/GpsStatus.java | 9 | ||||
-rw-r--r-- | location/java/android/location/LocationManager.java | 5 |
2 files changed, 14 insertions, 0 deletions
diff --git a/location/java/android/location/GpsStatus.java b/location/java/android/location/GpsStatus.java index 496885cd1f37..6a689756a1c0 100644 --- a/location/java/android/location/GpsStatus.java +++ b/location/java/android/location/GpsStatus.java @@ -151,6 +151,15 @@ public final class GpsStatus { return status; } + /** + * Builds an empty GpsStatus. + * + * @hide + */ + static GpsStatus createEmpty() { + return new GpsStatus(); + } + private GpsStatus() { } diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 241e9399be0a..2a2aaea035ff 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -1922,12 +1922,17 @@ public class LocationManager { GnssStatus gnssStatus = mGnssStatusListenerManager.getGnssStatus(); int ttff = mGnssStatusListenerManager.getTtff(); + + // even though this method is marked nullable, there are legacy applications that expect + // this to never return null, so avoid breaking those apps if (gnssStatus != null) { if (status == null) { status = GpsStatus.create(gnssStatus, ttff); } else { status.setStatus(gnssStatus, ttff); } + } else if (status == null) { + status = GpsStatus.createEmpty(); } return status; } |