Merge "Some Wi-Fi Menus like WPS should be disabled when Wi-Fi is off"
am: f952a87060
Change-Id: I0da164fbdbb04e54be2a26df85b8fcc1f58192e5
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index 6f23b4f..3b930e5 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -18,8 +18,11 @@
import android.app.Dialog;
import android.app.DialogFragment;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
import android.net.wifi.WpsInfo;
import android.os.Bundle;
import android.os.UserManager;
@@ -43,6 +46,13 @@
private boolean mUnavailable;
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ initPreferences();
+ }
+ };
+
public AdvancedWifiSettings() {
super(UserManager.DISALLOW_CONFIG_WIFI);
}
@@ -73,13 +83,23 @@
}
@Override
- public void onResume() {
- super.onResume();
+ public void onStart() {
+ super.onStart();
if (!mUnavailable) {
+ getActivity().registerReceiver(mReceiver,
+ new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
initPreferences();
}
}
+ @Override
+ public void onStop() {
+ super.onStop();
+ if (!mUnavailable) {
+ getActivity().unregisterReceiver(mReceiver);
+ }
+ }
+
private void initPreferences() {
final Context context = getActivity();
Intent intent = new Intent(Credentials.INSTALL_AS_USER_ACTION);
@@ -89,11 +109,13 @@
Preference pref = findPreference(KEY_INSTALL_CREDENTIALS);
pref.setIntent(intent);
-
+ final WifiManager wifiManager =
+ (WifiManager)getActivity().getSystemService(Context.WIFI_SERVICE);
Intent wifiDirectIntent = new Intent(context,
com.android.settings.Settings.WifiP2pSettingsActivity.class);
Preference wifiDirectPref = findPreference(KEY_WIFI_DIRECT);
wifiDirectPref.setIntent(wifiDirectIntent);
+ wifiDirectPref.setEnabled(wifiManager.isWifiEnabled());
// WpsDialog: Create the dialog like WifiSettings does.
Preference wpsPushPref = findPreference(KEY_WPS_PUSH);
@@ -104,6 +126,7 @@
return true;
}
});
+ wpsPushPref.setEnabled(wifiManager.isWifiEnabled());
// WpsDialog: Create the dialog like WifiSettings does.
Preference wpsPinPref = findPreference(KEY_WPS_PIN);
@@ -114,6 +137,7 @@
return true;
}
});
+ wpsPinPref.setEnabled(wifiManager.isWifiEnabled());
}
/* Wrapper class for the WPS dialog to properly handle life cycle events like rotation. */