DO NOT MERGE - Merge qt-qpr1-dev-plus-aosp@6304901 into stage-aosp-master
Bug: 151763422 Change-Id: I2f38724f862817185ae93dd79736791540251a60
This commit is contained in:
@@ -121,6 +121,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
"accessibility_shortcut_preference";
|
||||
private static final String HEARING_AID_PREFERENCE =
|
||||
"hearing_aid_preference";
|
||||
private static final String RTT_SETTINGS_SCREEN = "rtt_setting";
|
||||
private static final String CAPTIONING_PREFERENCE_SCREEN =
|
||||
"captioning_preference_screen";
|
||||
private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN =
|
||||
@@ -240,6 +241,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
private Preference mAccessibilityShortcutPreferenceScreen;
|
||||
private Preference mDisplayDaltonizerPreferenceScreen;
|
||||
private Preference mHearingAidPreference;
|
||||
private Preference mRTTPreference;
|
||||
private Preference mVibrationPreferenceScreen;
|
||||
private Preference mLiveCaptionPreference;
|
||||
private SwitchPreference mToggleInversionPreference;
|
||||
@@ -248,6 +250,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
private SwitchPreference mDarkUIModePreference;
|
||||
private DarkUIPreferenceController mDarkUIPreferenceController;
|
||||
private LiveCaptionPreferenceController mLiveCaptionPreferenceController;
|
||||
private RTTSettingPreferenceController mRTTSettingPreferenceController;
|
||||
|
||||
private int mLongPressTimeoutDefault;
|
||||
|
||||
@@ -309,6 +312,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
|
||||
mLiveCaptionPreferenceController = new LiveCaptionPreferenceController(context,
|
||||
LIVE_CAPTION_PREFERENCE_KEY);
|
||||
mRTTSettingPreferenceController =
|
||||
new RTTSettingPreferenceController(context, RTT_SETTINGS_SCREEN);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -503,6 +509,11 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
mHearingAidPreference = findPreference(HEARING_AID_PREFERENCE);
|
||||
mHearingAidPreferenceController.displayPreference(getPreferenceScreen());
|
||||
|
||||
// RTT Setting
|
||||
mRTTPreference = findPreference(RTT_SETTINGS_SCREEN);
|
||||
mRTTSettingPreferenceController.displayPreference(getPreferenceScreen());
|
||||
|
||||
|
||||
// Captioning.
|
||||
mCaptioningPreferenceScreen = findPreference(CAPTIONING_PREFERENCE_SCREEN);
|
||||
|
||||
@@ -787,6 +798,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
|
||||
|
||||
mHearingAidPreferenceController.updateState(mHearingAidPreference);
|
||||
|
||||
mRTTSettingPreferenceController.updateState(mRTTPreference);
|
||||
|
||||
mLiveCaptionPreferenceController.updateState(mLiveCaptionPreference);
|
||||
|
||||
updateFeatureSummary(Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED,
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.provider.Settings;
|
||||
import android.telecom.TelecomManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** A controller to control the status for RTT setting in Accessibility screen.*/
|
||||
public class RTTSettingPreferenceController extends BasePreferenceController {
|
||||
|
||||
private static final String DIALER_RTT_CONFIGURATION = "dialer_rtt_configuration";
|
||||
|
||||
private final Context mContext;
|
||||
private final PackageManager mPackageManager;
|
||||
private final TelecomManager mTelecomManager;
|
||||
private final CharSequence[] mModes;
|
||||
private final String mDialerPackage;
|
||||
|
||||
@VisibleForTesting
|
||||
Intent mRTTIntent;
|
||||
|
||||
public RTTSettingPreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
mContext = context;
|
||||
mModes = mContext.getResources().getTextArray(R.array.rtt_setting_mode);
|
||||
mDialerPackage = mContext.getString(R.string.config_rtt_setting_package_name);
|
||||
mPackageManager = context.getPackageManager();
|
||||
mTelecomManager = context.getSystemService(TelecomManager.class);
|
||||
mRTTIntent = new Intent(context.getString(R.string.config_rtt_setting_intent_action));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
final List<ResolveInfo> resolved =
|
||||
mPackageManager.queryIntentActivities(mRTTIntent, 0 /* flags */);
|
||||
return resolved != null && !resolved.isEmpty() && isDialerSupportRTTSetting()
|
||||
? AVAILABLE
|
||||
: UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
final Preference pref = screen.findPreference(getPreferenceKey());
|
||||
pref.setIntent(mRTTIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
final int option = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
DIALER_RTT_CONFIGURATION, 1 /* not visible */);
|
||||
return mModes[option];
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean isDialerSupportRTTSetting() {
|
||||
return TextUtils.equals(mTelecomManager.getDefaultDialerPackage(), mDialerPackage);
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ResetAppsHelper implements DialogInterface.OnClickListener,
|
||||
@@ -109,10 +110,17 @@ public class ResetAppsHelper implements DialogInterface.OnClickListener,
|
||||
AsyncTask.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<ApplicationInfo> apps = mPm.getInstalledApplications(
|
||||
final List<ApplicationInfo> apps = mPm.getInstalledApplications(
|
||||
PackageManager.GET_DISABLED_COMPONENTS);
|
||||
final List<String> whiteList = Arrays.asList(
|
||||
mContext.getResources().getStringArray(
|
||||
R.array.config_skip_reset_apps_package_name));
|
||||
|
||||
for (int i = 0; i < apps.size(); i++) {
|
||||
ApplicationInfo app = apps.get(i);
|
||||
if (whiteList.contains(app.packageName)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
mNm.clearData(app.packageName, app.uid, false);
|
||||
} catch (android.os.RemoteException ex) {
|
||||
|
||||
@@ -63,7 +63,7 @@ public class SettingsBaseActivity extends FragmentActivity {
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (isLockTaskModePinned() && !isSettingsRunOnTop()) {
|
||||
if (isLockTaskModePinned() && !isSettingsRunOnTop() && !isLaunchableInTaskModePinned()) {
|
||||
Log.w(TAG, "Devices lock task mode pinned.");
|
||||
finish();
|
||||
}
|
||||
@@ -147,6 +147,13 @@ public class SettingsBaseActivity extends FragmentActivity {
|
||||
((ViewGroup) findViewById(R.id.content_frame)).addView(view, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return whether or not the activity can be launched from other apps in the pinning screen.
|
||||
*/
|
||||
public boolean isLaunchableInTaskModePinned() {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onCategoriesChanged() {
|
||||
final int N = mCategoryListeners.size();
|
||||
for (int i = 0; i < N; i++) {
|
||||
|
||||
@@ -118,7 +118,8 @@ public class ImeiInfoDialogController {
|
||||
|
||||
mDialog.setText(ID_PRL_VERSION_VALUE, getCdmaPrlVersion());
|
||||
|
||||
if (mSubscriptionInfo != null && isCdmaLteEnabled()) {
|
||||
if ((mSubscriptionInfo != null && isCdmaLteEnabled()) ||
|
||||
(mSubscriptionInfo == null && isSimPresent(mSlotId))) {
|
||||
// Show IMEI for LTE device
|
||||
mDialog.setText(ID_IMEI_VALUE,
|
||||
getTextAsDigits(mTelephonyManager.getImei(mSlotId)));
|
||||
@@ -149,6 +150,15 @@ public class ImeiInfoDialogController {
|
||||
return mTelephonyManager.isGlobalModeEnabled();
|
||||
}
|
||||
|
||||
boolean isSimPresent(int slotId) {
|
||||
final int simState = mTelephonyManager.getSimState(slotId);
|
||||
if ((simState != TelephonyManager.SIM_STATE_ABSENT) &&
|
||||
(simState != TelephonyManager.SIM_STATE_UNKNOWN)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
String getMeid() {
|
||||
return mTelephonyManager.getMeid(mSlotId);
|
||||
|
||||
@@ -88,6 +88,8 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
|
||||
settingsMode);
|
||||
final ListPreference listPreference = (ListPreference) preference;
|
||||
listPreference.setSummary(getPreferredNetworkModeSummaryResId(settingsMode));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -188,6 +188,11 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLaunchableInTaskModePinned() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void prepareEnterAnimation() {
|
||||
getFragment().prepareEnterAnimation();
|
||||
}
|
||||
|
||||
@@ -317,6 +317,14 @@ public class SliceBuilderUtils {
|
||||
ListBuilder.ICON_IMAGE, sliceData.getTitle());
|
||||
final Set<String> keywords = buildSliceKeywords(sliceData);
|
||||
|
||||
int cur = sliderController.getSliderPosition();
|
||||
if (cur < sliderController.getMin()) {
|
||||
cur = sliderController.getMin();
|
||||
}
|
||||
if (cur > sliderController.getMax()) {
|
||||
cur = sliderController.getMax();
|
||||
}
|
||||
|
||||
return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
|
||||
.setAccentColor(color)
|
||||
.addInputRange(new InputRangeBuilder()
|
||||
@@ -325,7 +333,7 @@ public class SliceBuilderUtils {
|
||||
.setPrimaryAction(primaryAction)
|
||||
.setMax(sliderController.getMax())
|
||||
.setMin(sliderController.getMin())
|
||||
.setValue(sliderController.getSliderPosition())
|
||||
.setValue(cur)
|
||||
.setInputAction(actionIntent))
|
||||
.setKeywords(keywords)
|
||||
.build();
|
||||
|
||||
@@ -19,6 +19,8 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.EventLog;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.bluetooth.BluetoothSliceBuilder;
|
||||
@@ -71,6 +73,12 @@ public class SliceDeepLinkSpringBoard extends Activity {
|
||||
}
|
||||
|
||||
private static Uri parse(Uri uri) {
|
||||
return Uri.parse(uri.getQueryParameter(EXTRA_SLICE));
|
||||
final String sliceParameter = uri.getQueryParameter(EXTRA_SLICE);
|
||||
if (TextUtils.isEmpty(sliceParameter)) {
|
||||
EventLog.writeEvent(0x534e4554, "122836081", -1, "");
|
||||
return null;
|
||||
} else {
|
||||
return Uri.parse(sliceParameter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,6 +74,7 @@ import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to
|
||||
@@ -113,18 +114,30 @@ public class WifiConfigController implements TextWatcher,
|
||||
public static final int WIFI_EAP_METHOD_AKA_PRIME = 6;
|
||||
|
||||
/* These values come from "wifi_peap_phase2_entries" resource array */
|
||||
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;
|
||||
public static final int WIFI_PEAP_PHASE2_MSCHAPV2 = 0;
|
||||
public static final int WIFI_PEAP_PHASE2_GTC = 1;
|
||||
public static final int WIFI_PEAP_PHASE2_SIM = 2;
|
||||
public static final int WIFI_PEAP_PHASE2_AKA = 3;
|
||||
public static final int WIFI_PEAP_PHASE2_AKA_PRIME = 4;
|
||||
|
||||
/* These values come from "wifi_ttls_phase2_entries" resource array */
|
||||
public static final int WIFI_TTLS_PHASE2_PAP = 0;
|
||||
public static final int WIFI_TTLS_PHASE2_MSCHAP = 1;
|
||||
public static final int WIFI_TTLS_PHASE2_MSCHAPV2 = 2;
|
||||
public static final int WIFI_TTLS_PHASE2_GTC = 3;
|
||||
|
||||
private static final String UNDESIRED_CERTIFICATE_MACRANDSECRET = "MacRandSecret";
|
||||
private static final String UNDESIRED_CERTIFICATE_MACRANDSAPSECRET = "MacRandSapSecret";
|
||||
@VisibleForTesting
|
||||
static final String[] UNDESIRED_CERTIFICATES = {
|
||||
UNDESIRED_CERTIFICATE_MACRANDSECRET,
|
||||
UNDESIRED_CERTIFICATE_MACRANDSAPSECRET
|
||||
};
|
||||
|
||||
/* Phase2 methods supported by PEAP are limited */
|
||||
private ArrayAdapter<String> mPhase2PeapAdapter;
|
||||
/* Full list of phase2 methods */
|
||||
private ArrayAdapter<String> mPhase2FullAdapter;
|
||||
private ArrayAdapter<CharSequence> mPhase2PeapAdapter;
|
||||
/* Phase2 methods supported by TTLS are limited */
|
||||
private ArrayAdapter<CharSequence> mPhase2TtlsAdapter;
|
||||
|
||||
// e.g. AccessPoint.SECURITY_NONE
|
||||
@VisibleForTesting
|
||||
@@ -145,8 +158,8 @@ public class WifiConfigController implements TextWatcher,
|
||||
private Spinner mEapCaCertSpinner;
|
||||
private TextView mEapDomainView;
|
||||
private Spinner mPhase2Spinner;
|
||||
// Associated with mPhase2Spinner, one of mPhase2FullAdapter or mPhase2PeapAdapter
|
||||
private ArrayAdapter<String> mPhase2Adapter;
|
||||
// Associated with mPhase2Spinner, one of mPhase2TtlsAdapter or mPhase2PeapAdapter
|
||||
private ArrayAdapter<CharSequence> mPhase2Adapter;
|
||||
private Spinner mEapUserCertSpinner;
|
||||
private TextView mEapIdentityView;
|
||||
private TextView mEapAnonymousView;
|
||||
@@ -221,20 +234,20 @@ public class WifiConfigController implements TextWatcher,
|
||||
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>(
|
||||
mPhase2PeapAdapter = new ArrayAdapter<CharSequence>(
|
||||
mContext, android.R.layout.simple_spinner_item,
|
||||
res.getStringArray(R.array.wifi_peap_phase2_entries));
|
||||
} else {
|
||||
mPhase2PeapAdapter = new ArrayAdapter<String>(
|
||||
mPhase2PeapAdapter = new ArrayAdapter<CharSequence>(
|
||||
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>(
|
||||
mPhase2TtlsAdapter = new ArrayAdapter<CharSequence>(
|
||||
mContext, android.R.layout.simple_spinner_item,
|
||||
res.getStringArray(R.array.wifi_phase2_entries));
|
||||
mPhase2FullAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
res.getStringArray(R.array.wifi_ttls_phase2_entries));
|
||||
mPhase2TtlsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
|
||||
mUnspecifiedCertString = mContext.getString(R.string.wifi_unspecified);
|
||||
mMultipleCertSetString = mContext.getString(R.string.wifi_multiple_cert_added);
|
||||
@@ -662,9 +675,6 @@ public class WifiConfigController implements TextWatcher,
|
||||
// Map the index from the mPhase2PeapAdapter to the one used
|
||||
// by the API which has the full list of PEAP methods.
|
||||
switch(phase2Method) {
|
||||
case WIFI_PEAP_PHASE2_NONE:
|
||||
config.enterpriseConfig.setPhase2Method(Phase2.NONE);
|
||||
break;
|
||||
case WIFI_PEAP_PHASE2_MSCHAPV2:
|
||||
config.enterpriseConfig.setPhase2Method(Phase2.MSCHAPV2);
|
||||
break;
|
||||
@@ -685,9 +695,27 @@ public class WifiConfigController implements TextWatcher,
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Eap.TTLS:
|
||||
// The default index from mPhase2TtlsAdapter maps to the API
|
||||
switch(phase2Method) {
|
||||
case WIFI_TTLS_PHASE2_PAP:
|
||||
config.enterpriseConfig.setPhase2Method(Phase2.PAP);
|
||||
break;
|
||||
case WIFI_TTLS_PHASE2_MSCHAP:
|
||||
config.enterpriseConfig.setPhase2Method(Phase2.MSCHAP);
|
||||
break;
|
||||
case WIFI_TTLS_PHASE2_MSCHAPV2:
|
||||
config.enterpriseConfig.setPhase2Method(Phase2.MSCHAPV2);
|
||||
break;
|
||||
case WIFI_TTLS_PHASE2_GTC:
|
||||
config.enterpriseConfig.setPhase2Method(Phase2.GTC);
|
||||
break;
|
||||
default:
|
||||
Log.e(TAG, "Unknown phase2 method" + phase2Method);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// The default index from mPhase2FullAdapter maps to the API
|
||||
config.enterpriseConfig.setPhase2Method(phase2Method);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1024,9 +1052,6 @@ public class WifiConfigController implements TextWatcher,
|
||||
switch (eapMethod) {
|
||||
case Eap.PEAP:
|
||||
switch (phase2Method) {
|
||||
case Phase2.NONE:
|
||||
mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_NONE);
|
||||
break;
|
||||
case Phase2.MSCHAPV2:
|
||||
mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_MSCHAPV2);
|
||||
break;
|
||||
@@ -1047,8 +1072,26 @@ public class WifiConfigController implements TextWatcher,
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Eap.TTLS:
|
||||
switch (phase2Method) {
|
||||
case Phase2.PAP:
|
||||
mPhase2Spinner.setSelection(WIFI_TTLS_PHASE2_PAP);
|
||||
break;
|
||||
case Phase2.MSCHAP:
|
||||
mPhase2Spinner.setSelection(WIFI_TTLS_PHASE2_MSCHAP);
|
||||
break;
|
||||
case Phase2.MSCHAPV2:
|
||||
mPhase2Spinner.setSelection(WIFI_TTLS_PHASE2_MSCHAPV2);
|
||||
break;
|
||||
case Phase2.GTC:
|
||||
mPhase2Spinner.setSelection(WIFI_TTLS_PHASE2_GTC);
|
||||
break;
|
||||
default:
|
||||
Log.e(TAG, "Invalid phase 2 method " + phase2Method);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
mPhase2Spinner.setSelection(phase2Method);
|
||||
break;
|
||||
}
|
||||
if (!TextUtils.isEmpty(enterpriseConfig.getCaPath())) {
|
||||
@@ -1146,8 +1189,8 @@ public class WifiConfigController implements TextWatcher,
|
||||
break;
|
||||
case WIFI_EAP_METHOD_TTLS:
|
||||
// Reset adapter if needed
|
||||
if (mPhase2Adapter != mPhase2FullAdapter) {
|
||||
mPhase2Adapter = mPhase2FullAdapter;
|
||||
if (mPhase2Adapter != mPhase2TtlsAdapter) {
|
||||
mPhase2Adapter = mPhase2TtlsAdapter;
|
||||
mPhase2Spinner.setAdapter(mPhase2Adapter);
|
||||
}
|
||||
mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE);
|
||||
@@ -1198,12 +1241,10 @@ public class WifiConfigController implements TextWatcher,
|
||||
|
||||
private void setIdentityInvisible() {
|
||||
mView.findViewById(R.id.l_identity).setVisibility(View.GONE);
|
||||
mPhase2Spinner.setSelection(Phase2.NONE);
|
||||
}
|
||||
|
||||
private void setPhase2Invisible() {
|
||||
mView.findViewById(R.id.l_phase2).setVisibility(View.GONE);
|
||||
mPhase2Spinner.setSelection(Phase2.NONE);
|
||||
}
|
||||
|
||||
private void setCaCertInvisible() {
|
||||
@@ -1351,7 +1392,8 @@ public class WifiConfigController implements TextWatcher,
|
||||
return KeyStore.getInstance();
|
||||
}
|
||||
|
||||
private void loadCertificates(
|
||||
@VisibleForTesting
|
||||
void loadCertificates(
|
||||
Spinner spinner,
|
||||
String prefix,
|
||||
String noCertificateString,
|
||||
@@ -1367,12 +1409,24 @@ public class WifiConfigController implements TextWatcher,
|
||||
if (showUsePreinstalledCertOption) {
|
||||
certs.add(mUseSystemCertsString);
|
||||
}
|
||||
|
||||
String[] certificateNames = null;
|
||||
try {
|
||||
certs.addAll(
|
||||
Arrays.asList(getKeyStore().list(prefix, android.os.Process.WIFI_UID)));
|
||||
certificateNames = getKeyStore().list(prefix, android.os.Process.WIFI_UID);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "can't get the certificate list from KeyStore");
|
||||
}
|
||||
if (certificateNames != null && certificateNames.length != 0) {
|
||||
certs.addAll(Arrays.stream(certificateNames)
|
||||
.filter(certificateName -> {
|
||||
for (String undesired : UNDESIRED_CERTIFICATES) {
|
||||
if (certificateName.startsWith(undesired)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
if (mAccessPointSecurity != AccessPoint.SECURITY_EAP_SUITE_B) {
|
||||
certs.add(noCertificateString);
|
||||
|
||||
Reference in New Issue
Block a user