diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java index 164f4b4833d05..e653f04668638 100644 --- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java @@ -1616,6 +1616,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements updateEnabled(); restartLocationRequest(); } + + // Re-register network callbacks to get an update of available networks right away. + mNetworkConnectivityHandler.unregisterNetworkCallbacks(); + mNetworkConnectivityHandler.registerNetworkCallbacks(); } @Override diff --git a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java index dc1f4ddb19b9f..02bdfd5bcb564 100644 --- a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java +++ b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java @@ -301,6 +301,10 @@ class GnssNetworkConnectivityHandler { mConnMgr.registerNetworkCallback(networkRequest, mNetworkConnectivityCallback, mHandler); } + void unregisterNetworkCallbacks() { + mConnMgr.unregisterNetworkCallback(mNetworkConnectivityCallback); + } + /** * @return {@code true} if there is a data network available for outgoing connections, * {@code false} otherwise.