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
This commit is contained in:
@@ -246,9 +246,12 @@ public class WifiSettings extends SettingsPreferenceFragment
|
|||||||
public void onSuccess() {
|
public void onSuccess() {
|
||||||
}
|
}
|
||||||
public void onFailure(int reason) {
|
public void onFailure(int reason) {
|
||||||
Toast.makeText(getActivity(),
|
Activity activity = getActivity();
|
||||||
R.string.wifi_failed_connect_message,
|
if (activity != null) {
|
||||||
Toast.LENGTH_SHORT).show();
|
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 onSuccess() {
|
||||||
}
|
}
|
||||||
public void onFailure(int reason) {
|
public void onFailure(int reason) {
|
||||||
Toast.makeText(getActivity(),
|
Activity activity = getActivity();
|
||||||
R.string.wifi_failed_save_message,
|
if (activity != null) {
|
||||||
Toast.LENGTH_SHORT).show();
|
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 onSuccess() {
|
||||||
}
|
}
|
||||||
public void onFailure(int reason) {
|
public void onFailure(int reason) {
|
||||||
Toast.makeText(getActivity(),
|
Activity activity = getActivity();
|
||||||
R.string.wifi_failed_forget_message,
|
if (activity != null) {
|
||||||
Toast.LENGTH_SHORT).show();
|
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)
|
final ConnectivityManager connectivity = (ConnectivityManager)
|
||||||
getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
|
activity.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
if (connectivity != null
|
if (connectivity != null
|
||||||
&& connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
|
&& connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
@@ -307,7 +316,7 @@ public class WifiSettings extends SettingsPreferenceFragment
|
|||||||
if (mEnableNextOnConnection) {
|
if (mEnableNextOnConnection) {
|
||||||
if (hasNextButton()) {
|
if (hasNextButton()) {
|
||||||
final ConnectivityManager connectivity = (ConnectivityManager)
|
final ConnectivityManager connectivity = (ConnectivityManager)
|
||||||
getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
|
activity.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
if (connectivity != null) {
|
if (connectivity != null) {
|
||||||
NetworkInfo info = connectivity.getNetworkInfo(
|
NetworkInfo info = connectivity.getNetworkInfo(
|
||||||
ConnectivityManager.TYPE_WIFI);
|
ConnectivityManager.TYPE_WIFI);
|
||||||
@@ -742,7 +751,10 @@ public class WifiSettings extends SettingsPreferenceFragment
|
|||||||
updateAccessPoints();
|
updateAccessPoints();
|
||||||
updateConnectionState(info.getDetailedState());
|
updateConnectionState(info.getDetailedState());
|
||||||
if (mAutoFinishOnConnection && info.isConnected()) {
|
if (mAutoFinishOnConnection && info.isConnected()) {
|
||||||
getActivity().finish();
|
Activity activity = getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
activity.finish();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
|
} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
|
||||||
@@ -779,7 +791,10 @@ public class WifiSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateWifiState(int state) {
|
private void updateWifiState(int state) {
|
||||||
getActivity().invalidateOptionsMenu();
|
Activity activity = getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
activity.invalidateOptionsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case WifiManager.WIFI_STATE_ENABLED:
|
case WifiManager.WIFI_STATE_ENABLED:
|
||||||
@@ -825,8 +840,11 @@ public class WifiSettings extends SettingsPreferenceFragment
|
|||||||
mRetry = 0;
|
mRetry = 0;
|
||||||
} else if (++mRetry >= 3) {
|
} else if (++mRetry >= 3) {
|
||||||
mRetry = 0;
|
mRetry = 0;
|
||||||
Toast.makeText(getActivity(), R.string.wifi_fail_to_scan,
|
Activity activity = getActivity();
|
||||||
Toast.LENGTH_LONG).show();
|
if (activity != null) {
|
||||||
|
Toast.makeText(activity, R.string.wifi_fail_to_scan,
|
||||||
|
Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS);
|
sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS);
|
||||||
|
Reference in New Issue
Block a user