[WifiSetup] Fix auto-finish suppression logic

The flag needs to be saved into the instance state, and the flag is
set as soon as auto-finish occurs to avoid multi-launching the next
activity.

Bug: 16561238
Change-Id: I954b7ff77b2d2fc35684ea59cca7d7cd588a6aab
This commit is contained in:
Maurice Lam
2014-07-25 12:40:55 -07:00
parent 744c6b2251
commit 569aec7b4d

View File

@@ -59,6 +59,9 @@ public class WifiSetupActivity extends WifiPickerActivity
private static final String THEME_MATERIAL = "material"; private static final String THEME_MATERIAL = "material";
private static final String THEME_MATERIAL_LIGHT = "material_light"; private static final String THEME_MATERIAL_LIGHT = "material_light";
// Key for whether the user selected network in saved instance state bundle
private static final String PARAM_USER_SELECTED_NETWORK = "userSelectedNetwork";
// Activity result when pressing the Skip button // Activity result when pressing the Skip button
private static final int RESULT_SKIP = Activity.RESULT_FIRST_USER; private static final int RESULT_SKIP = Activity.RESULT_FIRST_USER;
@@ -100,8 +103,18 @@ public class WifiSetupActivity extends WifiPickerActivity
mAllowSkip = intent.getBooleanExtra(EXTRA_ALLOW_SKIP, true); mAllowSkip = intent.getBooleanExtra(EXTRA_ALLOW_SKIP, true);
// Behave like the user already selected a network if we do not require selection // Behave like the user already selected a network if we do not require selection
mUserSelectedNetwork = !intent.getBooleanExtra(EXTRA_REQUIRE_USER_NETWORK_SELECTION, false); mUserSelectedNetwork = !intent.getBooleanExtra(EXTRA_REQUIRE_USER_NETWORK_SELECTION, false);
}
refreshConnectionState(); @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(PARAM_USER_SELECTED_NETWORK, mUserSelectedNetwork);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mUserSelectedNetwork = savedInstanceState.getBoolean(PARAM_USER_SELECTED_NETWORK, true);
} }
private void refreshConnectionState() { private void refreshConnectionState() {
@@ -118,6 +131,9 @@ public class WifiSetupActivity extends WifiPickerActivity
if (mAutoFinishOnConnection && mUserSelectedNetwork) { if (mAutoFinishOnConnection && mUserSelectedNetwork) {
Log.d(TAG, "Auto-finishing with connection"); Log.d(TAG, "Auto-finishing with connection");
finishOrNext(Activity.RESULT_OK); finishOrNext(Activity.RESULT_OK);
// Require a user selection before auto-finishing next time we are here. The user
// can either connect to a different network or press "next" to proceed.
mUserSelectedNetwork = false;
} }
if (mNavigationBar != null) { if (mNavigationBar != null) {
mNavigationBar.getNextButton().setText(R.string.setup_wizard_next_button_label); mNavigationBar.getNextButton().setText(R.string.setup_wizard_next_button_label);
@@ -140,6 +156,7 @@ public class WifiSetupActivity extends WifiPickerActivity
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
registerReceiver(mReceiver, mFilter); registerReceiver(mReceiver, mFilter);
refreshConnectionState();
} }
@Override @Override
@@ -171,17 +188,6 @@ public class WifiSetupActivity extends WifiPickerActivity
return WifiSettingsForSetupWizard.class; return WifiSettingsForSetupWizard.class;
} }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_CANCELED) {
Log.d(TAG, "Back into WifiSetupActivity. Requiring user selection.");
// Require a user selection before we auto advance again. Or the user can press the
// next button if there is a valid WiFi connection.
mUserSelectedNetwork = false;
}
super.onActivityResult(requestCode, resultCode, data);
}
/** /**
* Complete this activity and return the results to the caller. If using WizardManager, this * Complete this activity and return the results to the caller. If using WizardManager, this
* will invoke the next scripted action; otherwise, we simply finish. * will invoke the next scripted action; otherwise, we simply finish.
@@ -226,7 +232,6 @@ public class WifiSetupActivity extends WifiPickerActivity
getWindow().setNavigationBarColor(Color.TRANSPARENT); getWindow().setNavigationBarColor(Color.TRANSPARENT);
getWindow().setStatusBarColor(Color.TRANSPARENT); getWindow().setStatusBarColor(Color.TRANSPARENT);
} }
refreshConnectionState();
} }
@Override @Override