diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 7df4645c709..008293462ec 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -266,13 +266,22 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment setPinnedHeaderView(R.layout.progress_header); setProgressBarVisible(false); - mWifiManager = activity.getSystemService(WifiManager.class); - if (mWifiManager != null) { + if (hasWifiManager()) { setLoading(true, false); mIsViewLoading = true; } } + private boolean hasWifiManager() { + if (mWifiManager != null) return true; + + Context context = getContext(); + if (context == null) return false; + + mWifiManager = context.getSystemService(WifiManager.class); + return (mWifiManager != null); + } + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -337,7 +346,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } private void addWifiSwitchPreferenceController() { - if (mWifiManager == null) return; + if (!hasWifiManager()) return; if (mWifiSwitchPreferenceController == null) { mWifiSwitchPreferenceController = new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle()); @@ -349,7 +358,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - if (mWifiManager != null) { + if (hasWifiManager()) { mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this); mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker(); @@ -420,7 +429,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment public void onStart() { super.onStart(); if (mIsViewLoading) { - final long delayMillis = (mWifiManager != null && mWifiManager.isWifiEnabled()) + final long delayMillis = (hasWifiManager() && mWifiManager.isWifiEnabled()) ? 1000 : 100; getView().postDelayed(mRemoveLoadingRunnable, delayMillis); } @@ -482,7 +491,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (mWifiManager == null) { + if (!hasWifiManager()) { // Do nothing } else if (requestCode == ADD_NETWORK_REQUEST) { handleAddNetworkRequest(resultCode, data); @@ -720,7 +729,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment /** Called when the state of Wifi has changed. */ @Override public void onWifiStateChanged() { - if (mIsRestricted || mWifiManager == null) { + if (mIsRestricted || !hasWifiManager()) { return; } final int wifiState = mWifiPickerTracker.getWifiState(); @@ -770,7 +779,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } final LocationManager locationManager = context.getSystemService(LocationManager.class); - if (mWifiManager == null || isWifiEnabled || !locationManager.isLocationEnabled() + if (!hasWifiManager() || isWifiEnabled || !locationManager.isLocationEnabled() || !mWifiManager.isScanAlwaysAvailable()) { mWifiStatusMessagePreference.setVisible(false); return; @@ -1063,7 +1072,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment final Context context = getContext(); final PowerManager powerManager = context.getSystemService(PowerManager.class); final ContentResolver contentResolver = context.getContentResolver(); - return mWifiManager != null + return hasWifiManager() && mWifiManager.isAutoWakeupEnabled() && mWifiManager.isScanAlwaysAvailable() && Settings.Global.getInt(contentResolver, @@ -1085,7 +1094,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private void handleAddNetworkSubmitEvent(Intent data) { final WifiConfiguration wifiConfiguration = data.getParcelableExtra( AddNetworkFragment.WIFI_CONFIG_KEY); - if (wifiConfiguration != null && mWifiManager != null) { + if (wifiConfiguration != null && hasWifiManager()) { mWifiManager.save(wifiConfiguration, mSaveListener); } } @@ -1122,7 +1131,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @Override public void onSubmit(WifiDialog2 dialog) { - if (mWifiManager == null) return; + if (!hasWifiManager()) return; final int dialogMode = dialog.getMode(); final WifiConfiguration config = dialog.getController().getConfig(); diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java index d74d7173401..f3e3674bda7 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java @@ -45,7 +45,6 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.UserManager; import android.provider.Settings; -import android.util.FeatureFlagUtils; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; @@ -162,15 +161,14 @@ public class NetworkProviderSettingsTest { @Test public void addNetworkFragmentSendResult_onActivityResult_shouldHandleEvent() { - final NetworkProviderSettings NetworkProviderSettings = spy(new NetworkProviderSettings()); final Intent intent = new Intent(); - doNothing().when(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), + doNothing().when(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); - NetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST, + mNetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST, Activity.RESULT_OK, intent); - verify(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); + verify(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class)); } @Test