summaryrefslogtreecommitdiff
path: root/location
diff options
context:
space:
mode:
Diffstat (limited to 'location')
-rw-r--r--location/java/android/location/GpsStatus.java9
-rw-r--r--location/java/android/location/LocationManager.java5
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;
}