diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index da75722744973..4511aa9390c6e 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -789,6 +789,18 @@ public class GnssLocationProvider implements LocationProviderInterface { } }; mGnssMetrics = new GnssMetrics(); + + /* + * A cycle of native_init() and native_cleanup() is needed so that callbacks are registered + * after bootup even when location is disabled. This will allow Emergency SUPL to work even + * when location is disabled before device restart. + * */ + boolean isInitialized = native_init(); + if(!isInitialized) { + Log.d(TAG, "Failed to initialize at bootup"); + } else { + native_cleanup(); + } } /**