summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/wifi
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2012-09-27 16:16:15 -0700
committerWink Saville <wink@google.com>2012-09-27 16:16:15 -0700
commit001e14a118e8d5c0fac5876439dc0356d7943eb7 (patch)
treeddaebe198b79183d52f87be2b84067dbc942c297 /src/com/android/settings/wifi
parent8bea3c3fb8b3ecbb33fbd5b159faaa7d229e7cf1 (diff)
downloadpackages_apps_Settings-001e14a118e8d5c0fac5876439dc0356d7943eb7.tar.gz
packages_apps_Settings-001e14a118e8d5c0fac5876439dc0356d7943eb7.tar.bz2
packages_apps_Settings-001e14a118e8d5c0fac5876439dc0356d7943eb7.zip
Fix an NPE in WifiSettings.
Under stressful conditions, like the Monkey tests, getActivity() can return null. We assume this occurs when the fragment has shut down but asynchronous commands are returning results. This change adds appropriate null checks but assumes during normal operation the checks are not needed. Bug: 7152711 Change-Id: I7a3736ccead33738dab1a36e78ae1d8042db6e94
Diffstat (limited to 'src/com/android/settings/wifi')
-rw-r--r--src/com/android/settings/wifi/WifiSettings.java48
1 files changed, 33 insertions, 15 deletions
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index b28aef334..61f8dcf25 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -246,9 +246,12 @@ public class WifiSettings extends SettingsPreferenceFragment
public void onSuccess() {
}
public void onFailure(int reason) {
- Toast.makeText(getActivity(),
- R.string.wifi_failed_connect_message,
- Toast.LENGTH_SHORT).show();
+ Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(activity,
+ R.string.wifi_failed_connect_message,
+ Toast.LENGTH_SHORT).show();
+ }
}
};
@@ -256,9 +259,12 @@ public class WifiSettings extends SettingsPreferenceFragment
public void onSuccess() {
}
public void onFailure(int reason) {
- Toast.makeText(getActivity(),
- R.string.wifi_failed_save_message,
- Toast.LENGTH_SHORT).show();
+ Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(activity,
+ R.string.wifi_failed_save_message,
+ Toast.LENGTH_SHORT).show();
+ }
}
};
@@ -266,9 +272,12 @@ public class WifiSettings extends SettingsPreferenceFragment
public void onSuccess() {
}
public void onFailure(int reason) {
- Toast.makeText(getActivity(),
- R.string.wifi_failed_forget_message,
- Toast.LENGTH_SHORT).show();
+ Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(activity,
+ R.string.wifi_failed_forget_message,
+ Toast.LENGTH_SHORT).show();
+ }
}
};
@@ -291,7 +300,7 @@ public class WifiSettings extends SettingsPreferenceFragment
}
final ConnectivityManager connectivity = (ConnectivityManager)
- getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
+ activity.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null
&& connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
super.onActivityCreated(savedInstanceState);
@@ -307,7 +316,7 @@ public class WifiSettings extends SettingsPreferenceFragment
if (mEnableNextOnConnection) {
if (hasNextButton()) {
final ConnectivityManager connectivity = (ConnectivityManager)
- getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
+ activity.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getNetworkInfo(
ConnectivityManager.TYPE_WIFI);
@@ -742,7 +751,10 @@ public class WifiSettings extends SettingsPreferenceFragment
updateAccessPoints();
updateConnectionState(info.getDetailedState());
if (mAutoFinishOnConnection && info.isConnected()) {
- getActivity().finish();
+ Activity activity = getActivity();
+ if (activity != null) {
+ activity.finish();
+ }
return;
}
} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
@@ -779,7 +791,10 @@ public class WifiSettings extends SettingsPreferenceFragment
}
private void updateWifiState(int state) {
- getActivity().invalidateOptionsMenu();
+ Activity activity = getActivity();
+ if (activity != null) {
+ activity.invalidateOptionsMenu();
+ }
switch (state) {
case WifiManager.WIFI_STATE_ENABLED:
@@ -825,8 +840,11 @@ public class WifiSettings extends SettingsPreferenceFragment
mRetry = 0;
} else if (++mRetry >= 3) {
mRetry = 0;
- Toast.makeText(getActivity(), R.string.wifi_fail_to_scan,
- Toast.LENGTH_LONG).show();
+ Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(activity, R.string.wifi_fail_to_scan,
+ Toast.LENGTH_LONG).show();
+ }
return;
}
sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS);