diff options
| -rw-r--r-- | services/core/java/com/android/server/location/GnssLocationProvider.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 7580cf4f0111..ae98077c7c2c 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -452,8 +452,12 @@ public class GnssLocationProvider implements LocationProviderInterface { new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { - requestUtcTime(); - xtraDownloadRequest(); + if (mInjectNtpTimePending == STATE_PENDING_NETWORK) { + requestUtcTime(); + } + if (mDownloadXtraDataPending == STATE_PENDING_NETWORK) { + xtraDownloadRequest(); + } } }; @@ -1002,6 +1006,11 @@ public class GnssLocationProvider implements LocationProviderInterface { } private void handleDownloadXtraData() { + if (!mSupportsXtra) { + // native code reports xtra not supported, don't try + Log.d(TAG, "handleDownloadXtraData() called when Xtra not supported"); + return; + } if (mDownloadXtraDataPending == STATE_DOWNLOADING) { // already downloading data return; @@ -2125,9 +2134,7 @@ public class GnssLocationProvider implements LocationProviderInterface { handleInjectNtpTime(); break; case DOWNLOAD_XTRA_DATA: - if (mSupportsXtra) { - handleDownloadXtraData(); - } + handleDownloadXtraData(); break; case INJECT_NTP_TIME_FINISHED: mInjectNtpTimePending = STATE_IDLE; |