diff options
| -rw-r--r-- | services/core/java/com/android/server/location/GnssLocationProvider.java | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 4a45c074f4d1..da7572274497 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -466,6 +466,11 @@ public class GnssLocationProvider implements LocationProviderInterface { // Always on, notify HAL so it can get data it needs sendMessage(UPDATE_NETWORK_STATE, 0 /*arg*/, network); } + + @Override + public void onLost(Network network) { + sendMessage(UPDATE_NETWORK_STATE, 0 /*arg*/, network); + } }; /** @@ -802,11 +807,21 @@ public class GnssLocationProvider implements LocationProviderInterface { private void handleUpdateNetworkState(Network network) { // retrieve NetworkInfo for this UID NetworkInfo info = mConnMgr.getNetworkInfo(network); - if (info == null) { - return; + + boolean networkAvailable = false; + boolean isConnected = false; + int type = ConnectivityManager.TYPE_NONE; + boolean isRoaming = false; + String apnName = null; + + if (info != null) { + networkAvailable = info.isAvailable() && TelephonyManager.getDefault().getDataEnabled(); + isConnected = info.isConnected(); + type = info.getType(); + isRoaming = info.isRoaming(); + apnName = info.getExtraInfo(); } - boolean isConnected = info.isConnected(); if (DEBUG) { String message = String.format( "UpdateNetworkState, state=%s, connected=%s, info=%s, capabilities=%S", @@ -818,8 +833,6 @@ public class GnssLocationProvider implements LocationProviderInterface { } if (native_is_agps_ril_supported()) { - boolean dataEnabled = TelephonyManager.getDefault().getDataEnabled(); - boolean networkAvailable = info.isAvailable() && dataEnabled; String defaultApn = getSelectedApn(); if (defaultApn == null) { defaultApn = "dummy-apn"; @@ -827,10 +840,10 @@ public class GnssLocationProvider implements LocationProviderInterface { native_update_network_state( isConnected, - info.getType(), - info.isRoaming(), + type, + isRoaming, networkAvailable, - info.getExtraInfo(), + apnName, defaultApn); } else if (DEBUG) { Log.d(TAG, "Skipped network state update because GPS HAL AGPS-RIL is not supported"); @@ -838,7 +851,6 @@ public class GnssLocationProvider implements LocationProviderInterface { if (mAGpsDataConnectionState == AGPS_DATA_CONNECTION_OPENING) { if (isConnected) { - String apnName = info.getExtraInfo(); if (apnName == null) { // assign a dummy value in the case of C2K as otherwise we will have a runtime // exception in the following call to native_agps_data_conn_open |