diff --git a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java index fb75ae1609cdb..129810c3265c8 100644 --- a/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java +++ b/services/core/java/com/android/server/timedetector/GnssTimeUpdateService.java @@ -116,6 +116,11 @@ public final class GnssTimeUpdateService extends Binder { Log.d(TAG, "requestGnssTimeUpdates()"); } + if (!mLocationManager.hasProvider(LocationManager.GPS_PROVIDER)) { + Log.e(TAG, "GPS provider does not exist on this device"); + return; + } + // Location Listener triggers onLocationChanged() when GNSS data is available, so // that the getGnssTimeMillis() function doesn't need to be continuously polled. mLocationListener = new LocationListener() { diff --git a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java index 8ac6dfb6d960e..aad5cd65c4f7f 100644 --- a/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java @@ -85,6 +85,9 @@ public final class GnssTimeUpdateServiceTest { when(mMockContext.getSystemService(AlarmManager.class)) .thenReturn(mMockAlarmManager); + when(mMockLocationManager.hasProvider(LocationManager.GPS_PROVIDER)) + .thenReturn(true); + LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal); mGnssTimeUpdateService =