diff options
author | Lucky Zhang <luckyzh@google.com> | 2015-01-14 12:06:43 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-14 12:06:43 +0000 |
commit | 591a09131162a32ad5923dc3553a464a5da1d39c (patch) | |
tree | 7bff683fd37205ce15ed6d48e77296822b61aa3a /src/com/android/settings/wifi | |
parent | bcad54f6474b264a04a4f59fb8ad6371861f1a62 (diff) | |
parent | 585b53e6d2ddc0725ce69f6f7208ad791e8d256e (diff) | |
download | packages_apps_Settings-591a09131162a32ad5923dc3553a464a5da1d39c.tar.gz packages_apps_Settings-591a09131162a32ad5923dc3553a464a5da1d39c.tar.bz2 packages_apps_Settings-591a09131162a32ad5923dc3553a464a5da1d39c.zip |
am 585b53e6: am 0325a858: Merge "[Settings] Wifi Setup responds to other connection state change" into lmp-mr1-dev
* commit '585b53e6d2ddc0725ce69f6f7208ad791e8d256e':
[Settings] Wifi Setup responds to other connection state change
Diffstat (limited to 'src/com/android/settings/wifi')
-rw-r--r-- | src/com/android/settings/wifi/WifiSetupActivity.java | 65 |
1 files changed, 44 insertions, 21 deletions
diff --git a/src/com/android/settings/wifi/WifiSetupActivity.java b/src/com/android/settings/wifi/WifiSetupActivity.java index 06a25d82b..a60945f5b 100644 --- a/src/com/android/settings/wifi/WifiSetupActivity.java +++ b/src/com/android/settings/wifi/WifiSetupActivity.java @@ -42,11 +42,15 @@ public class WifiSetupActivity extends WifiPickerActivity implements ButtonBarHandler, NavigationBarListener { private static final String TAG = "WifiSetupActivity"; - private static final String EXTRA_ALLOW_SKIP = "allowSkip"; - // this boolean extra specifies whether to auto finish when connection is established private static final String EXTRA_AUTO_FINISH_ON_CONNECT = "wifi_auto_finish_on_connect"; + // This boolean extra specifies whether network is required + private static final String EXTRA_IS_NETWORK_REQUIRED = "is_network_required"; + + // This boolean extra specifies whether wifi is required + private static final String EXTRA_IS_WIFI_REQUIRED = "is_wifi_required"; + // Whether auto finish is suspended until user connects to an access point private static final String EXTRA_REQUIRE_USER_NETWORK_SELECTION = "wifi_require_user_network_selection"; @@ -57,10 +61,12 @@ public class WifiSetupActivity extends WifiPickerActivity // Activity result when pressing the Skip button private static final int RESULT_SKIP = Activity.RESULT_FIRST_USER; - // Whether we allow skipping without a valid network connection - private boolean mAllowSkip = true; // Whether to auto finish when the user selected a network and successfully connected private boolean mAutoFinishOnConnection; + // Whether network is required to proceed. This is decided in SUW and passed in as an extra. + private boolean mIsNetworkRequired; + // Whether wifi is required to proceed. This is decided in SUW and passed in as an extra. + private boolean mIsWifiRequired; // Whether the user connected to a network. This excludes the auto-connecting by the system. private boolean mUserSelectedNetwork; // Whether the device is connected to WiFi @@ -75,7 +81,6 @@ public class WifiSetupActivity extends WifiPickerActivity // Refresh the connection state with the latest connection info. Use the connection info // from ConnectivityManager instead of the one attached in the intent to make sure // we have the most up-to-date connection state. b/17511772 - refreshConnectionState(); } }; @@ -89,7 +94,8 @@ public class WifiSetupActivity extends WifiPickerActivity mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); mAutoFinishOnConnection = intent.getBooleanExtra(EXTRA_AUTO_FINISH_ON_CONNECT, false); - mAllowSkip = intent.getBooleanExtra(EXTRA_ALLOW_SKIP, true); + mIsNetworkRequired = intent.getBooleanExtra(EXTRA_IS_NETWORK_REQUIRED, false); + mIsWifiRequired = intent.getBooleanExtra(EXTRA_IS_WIFI_REQUIRED, false); // Behave like the user already selected a network if we do not require selection mUserSelectedNetwork = !intent.getBooleanExtra(EXTRA_REQUIRE_USER_NETWORK_SELECTION, false); } @@ -106,18 +112,17 @@ public class WifiSetupActivity extends WifiPickerActivity mUserSelectedNetwork = savedInstanceState.getBoolean(PARAM_USER_SELECTED_NETWORK, true); } - private void refreshConnectionState() { + private boolean isWifiConnected() { final ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - boolean connected = connectivity != null && + boolean wifiConnected = connectivity != null && connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected(); - - refreshConnectionState(connected); + mWifiConnected = wifiConnected; + return wifiConnected; } - private void refreshConnectionState(boolean connected) { - mWifiConnected = connected; - if (connected) { + private void refreshConnectionState() { + if (isWifiConnected()) { if (mAutoFinishOnConnection && mUserSelectedNetwork) { Log.d(TAG, "Auto-finishing with connection"); finishOrNext(Activity.RESULT_OK); @@ -125,15 +130,33 @@ public class WifiSetupActivity extends WifiPickerActivity // can either connect to a different network or press "next" to proceed. mUserSelectedNetwork = false; } - if (mNavigationBar != null) { - mNavigationBar.getNextButton().setText(R.string.setup_wizard_next_button_label); - mNavigationBar.getNextButton().setEnabled(true); - } + setNextButtonText(R.string.setup_wizard_next_button_label); + setNextButtonEnabled(true); + } else if (mIsWifiRequired || (mIsNetworkRequired && !isNetworkConnected())) { + // We do not want the user to skip wifi setting if + // - wifi is required, but wifi connection hasn't been established yet; + // - or network is required, but no valid connection has been established. + setNextButtonText(R.string.skip_label); + setNextButtonEnabled(false); } else { - if (mNavigationBar != null) { - mNavigationBar.getNextButton().setText(R.string.skip_label); - mNavigationBar.getNextButton().setEnabled(mAllowSkip); - } + // In other cases, user can choose to skip. Specifically these cases are + // - wifi is not required; + // - and network is not required; + // - or network is required and a valid connection has been established. + setNextButtonText(R.string.skip_label); + setNextButtonEnabled(true); + } + } + + private void setNextButtonEnabled(boolean enabled) { + if (mNavigationBar != null) { + mNavigationBar.getNextButton().setEnabled(enabled); + } + } + + private void setNextButtonText(int resId) { + if (mNavigationBar != null) { + mNavigationBar.getNextButton().setText(resId); } } |