Fix ConnectivityManager.requestNetwork crash issue when try again
- When the user requests "try again", the Network-Request-Dialog will be recreated. If the Wi-Fi framework sends the callback result at this time, the Network-Request-Dialog may not be ready at the moment, causing the NPE to crash. - Add NPE checks to avoid crash issues. Bug: 220679437 Test: manual test make RunSettingsRoboTests \ ROBOTEST_FILTER=NetworkRequestDialogActivityTest Change-Id: I8e48a29649e72d9f8c67c4ac24f0eb27ba600dae
This commit is contained in:
@@ -58,12 +58,17 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
|
||||
final static String EXTRA_IS_SPECIFIED_SSID =
|
||||
"com.android.settings.wifi.extra.REQUEST_IS_FOR_SINGLE_NETWORK";
|
||||
|
||||
@VisibleForTesting NetworkRequestDialogBaseFragment mDialogFragment;
|
||||
@VisibleForTesting
|
||||
NetworkRequestDialogBaseFragment mDialogFragment;
|
||||
@VisibleForTesting
|
||||
boolean mIsSpecifiedSsid;
|
||||
@VisibleForTesting
|
||||
boolean mShowingErrorDialog;
|
||||
@VisibleForTesting
|
||||
ProgressDialog mProgressDialog;
|
||||
|
||||
private NetworkRequestUserSelectionCallback mUserSelectionCallback;
|
||||
private boolean mIsSpecifiedSsid;
|
||||
private boolean mShowingErrorDialog;
|
||||
private WifiConfiguration mMatchedConfig;
|
||||
@VisibleForTesting ProgressDialog mProgressDialog;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
@@ -103,7 +108,8 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
|
||||
mDialogFragment.show(getSupportFragmentManager(), TAG);
|
||||
}
|
||||
|
||||
private void dismissDialogs() {
|
||||
@VisibleForTesting
|
||||
void dismissDialogs() {
|
||||
if (mDialogFragment != null) {
|
||||
mDialogFragment.dismiss();
|
||||
mDialogFragment = null;
|
||||
@@ -174,7 +180,9 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
|
||||
return;
|
||||
}
|
||||
|
||||
mDialogFragment.onUserSelectionCallbackRegistration(userSelectionCallback);
|
||||
if (mDialogFragment != null) {
|
||||
mDialogFragment.onUserSelectionCallbackRegistration(userSelectionCallback);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -201,7 +209,9 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements
|
||||
return;
|
||||
}
|
||||
|
||||
mDialogFragment.onMatch(scanResults);
|
||||
if (mDialogFragment != null) {
|
||||
mDialogFragment.onMatch(scanResults);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user