Loading res/values/arrays.xml +15 −0 Original line number Diff line number Diff line Loading @@ -388,6 +388,21 @@ <item>GTC</item> </string-array> <!-- Type of EAP method when EAP SIM, AKA, AKA' are supported --> <string-array name="wifi_peap_phase2_entries_with_sim_auth"> <item>None</item> <!-- Do not translate. --> <item>MSCHAPV2</item> <!-- Do not translate. --> <item>GTC</item> <!-- Do not translate. --> <item>SIM</item> <!-- Do not translate. --> <item>AKA</item> <!-- Do not translate. --> <item>AKA\'</item> </string-array> <!-- Phase 2 options for rest of EAP methods --> <string-array name="wifi_phase2_entries"> <item>None</item> Loading src/com/android/settings/wifi/WifiConfigController.java +54 −5 Original line number Diff line number Diff line Loading @@ -106,6 +106,9 @@ public class WifiConfigController implements TextWatcher, public static final int WIFI_PEAP_PHASE2_NONE = 0; public static final int WIFI_PEAP_PHASE2_MSCHAPV2 = 1; public static final int WIFI_PEAP_PHASE2_GTC = 2; public static final int WIFI_PEAP_PHASE2_SIM = 3; public static final int WIFI_PEAP_PHASE2_AKA = 4; public static final int WIFI_PEAP_PHASE2_AKA_PRIME = 5; /* Phase2 methods supported by PEAP are limited */ private final ArrayAdapter<String> mPhase2PeapAdapter; Loading Loading @@ -176,9 +179,16 @@ public class WifiConfigController implements TextWatcher, final Resources res = mContext.getResources(); mLevels = res.getStringArray(R.array.wifi_signal); if (Utils.isWifiOnly(mContext) || !mContext.getResources().getBoolean( com.android.internal.R.bool.config_eap_sim_based_auth_supported)) { mPhase2PeapAdapter = new ArrayAdapter<String>( mContext, android.R.layout.simple_spinner_item, res.getStringArray(R.array.wifi_peap_phase2_entries)); } else { mPhase2PeapAdapter = new ArrayAdapter<String>( mContext, android.R.layout.simple_spinner_item, res.getStringArray(R.array.wifi_peap_phase2_entries_with_sim_auth)); } mPhase2PeapAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mPhase2FullAdapter = new ArrayAdapter<String>( Loading Loading @@ -532,6 +542,15 @@ public class WifiConfigController implements TextWatcher, case WIFI_PEAP_PHASE2_GTC: config.enterpriseConfig.setPhase2Method(Phase2.GTC); break; case WIFI_PEAP_PHASE2_SIM: config.enterpriseConfig.setPhase2Method(Phase2.SIM); break; case WIFI_PEAP_PHASE2_AKA: config.enterpriseConfig.setPhase2Method(Phase2.AKA); break; case WIFI_PEAP_PHASE2_AKA_PRIME: config.enterpriseConfig.setPhase2Method(Phase2.AKA_PRIME); break; default: Log.e(TAG, "Unknown phase2 method" + phase2Method); break; Loading Loading @@ -795,6 +814,7 @@ public class WifiConfigController implements TextWatcher, mEapMethodSpinner.setAdapter(spinnerAdapter); } mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2); mPhase2Spinner.setOnItemSelectedListener(this); mEapCaCertSpinner = (Spinner) mView.findViewById(R.id.ca_cert); mEapCaCertSpinner.setOnItemSelectedListener(this); mEapDomainView = (TextView) mView.findViewById(R.id.domain); Loading Loading @@ -836,6 +856,15 @@ public class WifiConfigController implements TextWatcher, case Phase2.GTC: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_GTC); break; case Phase2.SIM: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_SIM); break; case Phase2.AKA: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA); break; case Phase2.AKA_PRIME: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA_PRIME); break; default: Log.e(TAG, "Invalid phase 2 method " + phase2Method); break; Loading Loading @@ -874,6 +903,7 @@ public class WifiConfigController implements TextWatcher, mEapIdentityView.setText(enterpriseConfig.getIdentity()); mEapAnonymousView.setText(enterpriseConfig.getAnonymousIdentity()); } else { mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2); showEapFieldsByMethod(mEapMethodSpinner.getSelectedItemPosition()); } } else { Loading @@ -886,11 +916,11 @@ public class WifiConfigController implements TextWatcher, * identity * password * EAP-PEAP valid fields include * phase2: MSCHAPV2, GTC * phase2: MSCHAPV2, GTC, SIM, AKA, AKA' * ca_cert * identity * anonymous_identity * password * password (not required for SIM, AKA, AKA') * EAP-TLS valid fields include * user_cert * ca_cert Loading Loading @@ -938,6 +968,7 @@ public class WifiConfigController implements TextWatcher, } mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE); mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE); showPeapFields(); setUserCertInvisible(); break; case WIFI_EAP_METHOD_TTLS: Loading Loading @@ -974,6 +1005,21 @@ public class WifiConfigController implements TextWatcher, } } private void showPeapFields() { int phase2Method = mPhase2Spinner.getSelectedItemPosition(); if (phase2Method == WIFI_PEAP_PHASE2_SIM || phase2Method == WIFI_PEAP_PHASE2_AKA || phase2Method == WIFI_PEAP_PHASE2_AKA_PRIME) { mEapIdentityView.setText(""); mView.findViewById(R.id.l_identity).setVisibility(View.GONE); setPasswordInvisible(); } else { mView.findViewById(R.id.l_identity).setVisibility(View.VISIBLE); mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE); mView.findViewById(R.id.password_layout).setVisibility(View.VISIBLE); mView.findViewById(R.id.show_password_layout).setVisibility(View.VISIBLE); } } private void setIdentityInvisible() { mView.findViewById(R.id.l_identity).setVisibility(View.GONE); mPhase2Spinner.setSelection(Phase2.NONE); Loading Loading @@ -1239,6 +1285,9 @@ public class WifiConfigController implements TextWatcher, showSecurityFields(); } else if (parent == mEapMethodSpinner || parent == mEapCaCertSpinner) { showSecurityFields(); } else if (parent == mPhase2Spinner && mEapMethodSpinner.getSelectedItemPosition() == WIFI_EAP_METHOD_PEAP) { showPeapFields(); } else if (parent == mProxySettingsSpinner) { showProxyFields(); } else { Loading Loading
res/values/arrays.xml +15 −0 Original line number Diff line number Diff line Loading @@ -388,6 +388,21 @@ <item>GTC</item> </string-array> <!-- Type of EAP method when EAP SIM, AKA, AKA' are supported --> <string-array name="wifi_peap_phase2_entries_with_sim_auth"> <item>None</item> <!-- Do not translate. --> <item>MSCHAPV2</item> <!-- Do not translate. --> <item>GTC</item> <!-- Do not translate. --> <item>SIM</item> <!-- Do not translate. --> <item>AKA</item> <!-- Do not translate. --> <item>AKA\'</item> </string-array> <!-- Phase 2 options for rest of EAP methods --> <string-array name="wifi_phase2_entries"> <item>None</item> Loading
src/com/android/settings/wifi/WifiConfigController.java +54 −5 Original line number Diff line number Diff line Loading @@ -106,6 +106,9 @@ public class WifiConfigController implements TextWatcher, public static final int WIFI_PEAP_PHASE2_NONE = 0; public static final int WIFI_PEAP_PHASE2_MSCHAPV2 = 1; public static final int WIFI_PEAP_PHASE2_GTC = 2; public static final int WIFI_PEAP_PHASE2_SIM = 3; public static final int WIFI_PEAP_PHASE2_AKA = 4; public static final int WIFI_PEAP_PHASE2_AKA_PRIME = 5; /* Phase2 methods supported by PEAP are limited */ private final ArrayAdapter<String> mPhase2PeapAdapter; Loading Loading @@ -176,9 +179,16 @@ public class WifiConfigController implements TextWatcher, final Resources res = mContext.getResources(); mLevels = res.getStringArray(R.array.wifi_signal); if (Utils.isWifiOnly(mContext) || !mContext.getResources().getBoolean( com.android.internal.R.bool.config_eap_sim_based_auth_supported)) { mPhase2PeapAdapter = new ArrayAdapter<String>( mContext, android.R.layout.simple_spinner_item, res.getStringArray(R.array.wifi_peap_phase2_entries)); } else { mPhase2PeapAdapter = new ArrayAdapter<String>( mContext, android.R.layout.simple_spinner_item, res.getStringArray(R.array.wifi_peap_phase2_entries_with_sim_auth)); } mPhase2PeapAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mPhase2FullAdapter = new ArrayAdapter<String>( Loading Loading @@ -532,6 +542,15 @@ public class WifiConfigController implements TextWatcher, case WIFI_PEAP_PHASE2_GTC: config.enterpriseConfig.setPhase2Method(Phase2.GTC); break; case WIFI_PEAP_PHASE2_SIM: config.enterpriseConfig.setPhase2Method(Phase2.SIM); break; case WIFI_PEAP_PHASE2_AKA: config.enterpriseConfig.setPhase2Method(Phase2.AKA); break; case WIFI_PEAP_PHASE2_AKA_PRIME: config.enterpriseConfig.setPhase2Method(Phase2.AKA_PRIME); break; default: Log.e(TAG, "Unknown phase2 method" + phase2Method); break; Loading Loading @@ -795,6 +814,7 @@ public class WifiConfigController implements TextWatcher, mEapMethodSpinner.setAdapter(spinnerAdapter); } mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2); mPhase2Spinner.setOnItemSelectedListener(this); mEapCaCertSpinner = (Spinner) mView.findViewById(R.id.ca_cert); mEapCaCertSpinner.setOnItemSelectedListener(this); mEapDomainView = (TextView) mView.findViewById(R.id.domain); Loading Loading @@ -836,6 +856,15 @@ public class WifiConfigController implements TextWatcher, case Phase2.GTC: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_GTC); break; case Phase2.SIM: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_SIM); break; case Phase2.AKA: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA); break; case Phase2.AKA_PRIME: mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA_PRIME); break; default: Log.e(TAG, "Invalid phase 2 method " + phase2Method); break; Loading Loading @@ -874,6 +903,7 @@ public class WifiConfigController implements TextWatcher, mEapIdentityView.setText(enterpriseConfig.getIdentity()); mEapAnonymousView.setText(enterpriseConfig.getAnonymousIdentity()); } else { mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2); showEapFieldsByMethod(mEapMethodSpinner.getSelectedItemPosition()); } } else { Loading @@ -886,11 +916,11 @@ public class WifiConfigController implements TextWatcher, * identity * password * EAP-PEAP valid fields include * phase2: MSCHAPV2, GTC * phase2: MSCHAPV2, GTC, SIM, AKA, AKA' * ca_cert * identity * anonymous_identity * password * password (not required for SIM, AKA, AKA') * EAP-TLS valid fields include * user_cert * ca_cert Loading Loading @@ -938,6 +968,7 @@ public class WifiConfigController implements TextWatcher, } mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE); mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE); showPeapFields(); setUserCertInvisible(); break; case WIFI_EAP_METHOD_TTLS: Loading Loading @@ -974,6 +1005,21 @@ public class WifiConfigController implements TextWatcher, } } private void showPeapFields() { int phase2Method = mPhase2Spinner.getSelectedItemPosition(); if (phase2Method == WIFI_PEAP_PHASE2_SIM || phase2Method == WIFI_PEAP_PHASE2_AKA || phase2Method == WIFI_PEAP_PHASE2_AKA_PRIME) { mEapIdentityView.setText(""); mView.findViewById(R.id.l_identity).setVisibility(View.GONE); setPasswordInvisible(); } else { mView.findViewById(R.id.l_identity).setVisibility(View.VISIBLE); mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE); mView.findViewById(R.id.password_layout).setVisibility(View.VISIBLE); mView.findViewById(R.id.show_password_layout).setVisibility(View.VISIBLE); } } private void setIdentityInvisible() { mView.findViewById(R.id.l_identity).setVisibility(View.GONE); mPhase2Spinner.setSelection(Phase2.NONE); Loading Loading @@ -1239,6 +1285,9 @@ public class WifiConfigController implements TextWatcher, showSecurityFields(); } else if (parent == mEapMethodSpinner || parent == mEapCaCertSpinner) { showSecurityFields(); } else if (parent == mPhase2Spinner && mEapMethodSpinner.getSelectedItemPosition() == WIFI_EAP_METHOD_PEAP) { showPeapFields(); } else if (parent == mProxySettingsSpinner) { showProxyFields(); } else { Loading