diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7199dd598ed..8fedf92b345 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -292,10 +292,6 @@
android:icon="@drawable/ic_homepage_network"
android:exported="true"
android:configChanges="orientation|keyboardHidden|screenSize">
-
-
-
-
+
+
+
+
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 8a4929a591b..349bb826097 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -19,6 +19,8 @@ package com.android.settings.network;
import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
+import static com.android.settings.Settings.WifiSettingsActivity;
+
import android.app.Activity;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
@@ -27,6 +29,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.location.LocationManager;
import android.net.NetworkTemplate;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
@@ -277,6 +280,17 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) {
+ final Intent intent = new Intent(getContext(), WifiSettingsActivity.class);
+ final Bundle extras = getActivity().getIntent().getExtras();
+ if (extras != null) {
+ intent.putExtras(extras);
+ }
+ getContext().startActivity(intent);
+ finish();
+ return;
+ }
+
mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
// TODO(b/37429702): Add animations and preference comparator back after initial screen is
@@ -464,7 +478,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@Override
public void onDestroy() {
- mAirplaneModeEnabler.close();
+ if (mAirplaneModeEnabler != null) {
+ mAirplaneModeEnabler.close();
+ }
super.onDestroy();
}
@@ -756,7 +772,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
if (context == null) {
return;
}
- if (isWifiEnabled || !mWifiManager.isScanAlwaysAvailable()) {
+
+ final LocationManager locationManager = context.getSystemService(LocationManager.class);
+ if (isWifiEnabled || !locationManager.isLocationEnabled()
+ || !mWifiManager.isScanAlwaysAvailable()) {
mWifiStatusMessagePreference.setVisible(false);
return;
}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index e048849ae9c..be8bf3a1d33 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -38,6 +38,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.location.LocationManager;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
@@ -98,6 +99,8 @@ public class NetworkProviderSettingsTest {
@Mock
private UserManager mUserManager;
@Mock
+ private LocationManager mLocationManager;
+ @Mock
private AirplaneModeEnabler mAirplaneModeEnabler;
@Mock
private DataUsagePreference mDataUsagePreference;
@@ -133,6 +136,7 @@ public class NetworkProviderSettingsTest {
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
+ doReturn(mLocationManager).when(mContext).getSystemService(LocationManager.class);
when(mUserManager.hasBaseUserRestriction(any(), any())).thenReturn(true);
doReturn(mContext).when(mPreferenceManager).getContext();
mNetworkProviderSettings.mAddWifiNetworkPreference = new AddWifiNetworkPreference(mContext);
@@ -543,19 +547,41 @@ public class NetworkProviderSettingsTest {
}
@Test
- public void setWifiScanMessage_wifiOffScanOn_footerIsVisible() {
+ public void setWifiScanMessage_wifiOffLocationOnScanOn_footerIsVisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+ when(mLocationManager.isLocationEnabled()).thenReturn(true);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isTrue();
assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.getTitle().length())
- .isNotEqualTo(0);
+ .isNotEqualTo(0);
}
@Test
- public void setWifiScanMessage_wifiOffScanOff_footerIsInvisible() {
+ public void setWifiScanMessage_wifiOffLocationOnScanOff_footerIsInvisible() {
when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+ when(mLocationManager.isLocationEnabled()).thenReturn(true);
+
+ mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
+
+ assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse();
+ }
+
+ @Test
+ public void setWifiScanMessage_wifiOffLocationOffScanOn_footerIsInvisible() {
+ when(mWifiManager.isScanAlwaysAvailable()).thenReturn(true);
+ when(mLocationManager.isLocationEnabled()).thenReturn(false);
+
+ mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);
+
+ assertThat(mNetworkProviderSettings.mWifiStatusMessagePreference.isVisible()).isFalse();
+ }
+
+ @Test
+ public void setWifiScanMessage_wifiOffLocationOffScanOff_footerIsInvisible() {
+ when(mWifiManager.isScanAlwaysAvailable()).thenReturn(false);
+ when(mLocationManager.isLocationEnabled()).thenReturn(false);
mNetworkProviderSettings.setWifiScanMessage(/* isWifiEnabled */ false);