summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings')
-rw-r--r--src/com/android/settings/ChooseLockGeneric.java19
-rw-r--r--src/com/android/settings/ChooseLockPassword.java64
-rw-r--r--src/com/android/settings/ChooseLockPattern.java58
-rw-r--r--src/com/android/settings/DisplaySettings.java31
-rw-r--r--src/com/android/settings/InstrumentedActivity.java47
-rw-r--r--src/com/android/settings/SettingsPreferenceFragment.java5
-rw-r--r--src/com/android/settings/deviceinfo/UsbBackend.java154
-rw-r--r--src/com/android/settings/deviceinfo/UsbModeChooserActivity.java144
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollBase.java4
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java6
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java6
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollFinish.java6
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java6
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java6
-rw-r--r--src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java9
-rw-r--r--src/com/android/settings/fingerprint/FingerprintSettings.java12
-rw-r--r--src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java6
-rw-r--r--src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java6
-rw-r--r--src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java6
-rw-r--r--src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java6
-rw-r--r--src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java6
-rw-r--r--src/com/android/settings/wifi/WifiConfigController.java14
22 files changed, 502 insertions, 119 deletions
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 1015a45..167a381 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -109,11 +109,18 @@ public class ChooseLockGeneric extends SettingsActivity {
@Override
public void onRemovalSucceeded(Fingerprint fingerprint) {
Log.v(TAG, "Fingerprint removed: " + fingerprint.getFingerId());
+ if (mFingerprintManager.getEnrolledFingerprints().size() == 0) {
+ finish();
+ }
}
@Override
public void onRemovalError(Fingerprint fp, int errMsgId, CharSequence errString) {
- Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
+ Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
+ }
+ finish();
}
};
@@ -490,18 +497,18 @@ public class ChooseLockGeneric extends SettingsActivity {
mChooseLockSettingsHelper.utils().clearLock(UserHandle.myUserId());
mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled,
UserHandle.myUserId());
- removeAllFingerprintTemplates();
+ removeAllFingerprintTemplatesAndFinish();
getActivity().setResult(Activity.RESULT_OK);
- finish();
} else {
- removeAllFingerprintTemplates();
- finish();
+ removeAllFingerprintTemplatesAndFinish();
}
}
- private void removeAllFingerprintTemplates() {
+ private void removeAllFingerprintTemplatesAndFinish() {
if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()) {
mFingerprintManager.remove(new Fingerprint(null, 0, 0, 0), mRemovalCallback);
+ } else {
+ finish();
}
}
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 64aaaca..bc370c9 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -128,6 +128,7 @@ public class ChooseLockPassword extends SettingsActivity {
private static final String KEY_CURRENT_PASSWORD = "current_password";
private String mCurrentPassword;
+ private String mChosenPassword;
private boolean mHasChallenge;
private long mChallenge;
private TextView mPasswordEntry;
@@ -145,6 +146,9 @@ public class ChooseLockPassword extends SettingsActivity {
private int mRequestedQuality = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
private ChooseLockSettingsHelper mChooseLockSettingsHelper;
private Stage mUiStage = Stage.Introduction;
+
+ // True once we have confirmed new PIN/password to prevent virtual keyboard
+ // re-entries of the same PIN
private boolean mDone = false;
private TextView mHeaderText;
private String mFirstPin;
@@ -478,37 +482,56 @@ public class ChooseLockPassword extends SettingsActivity {
return null;
}
+ private class SaveChosenPasswordAndFinish extends AsyncTask<Void, Void, Void> {
+ boolean mWasSecureBefore;
+
+ @Override
+ public void onPreExecute() {
+ mWasSecureBefore = mLockPatternUtils.isSecure(UserHandle.myUserId());
+ final boolean required = getActivity().getIntent().getBooleanExtra(
+ EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
+ mLockPatternUtils.setCredentialRequiredToDecrypt(required);
+ }
+
+ @Override
+ public Void doInBackground(Void... v) {
+ mLockPatternUtils.saveLockPassword(mChosenPassword, mCurrentPassword, mRequestedQuality,
+ UserHandle.myUserId());
+ return null;
+ }
+
+ @Override
+ public void onPostExecute(Void v) {
+ if (mHasChallenge) {
+ startVerifyPassword(mChosenPassword, mWasSecureBefore);
+ return;
+ } else {
+ getActivity().setResult(RESULT_FINISHED);
+ }
+ finishConfirmStage(mWasSecureBefore);
+ }
+ }
+
+
public void handleNext() {
if (mDone) return;
-
- final String pin = mPasswordEntry.getText().toString();
- if (TextUtils.isEmpty(pin)) {
+ mChosenPassword = mPasswordEntry.getText().toString();
+ if (TextUtils.isEmpty(mChosenPassword)) {
return;
}
String errorMsg = null;
if (mUiStage == Stage.Introduction) {
- errorMsg = validatePassword(pin);
+ errorMsg = validatePassword(mChosenPassword);
if (errorMsg == null) {
- mFirstPin = pin;
+ mFirstPin = mChosenPassword;
mPasswordEntry.setText("");
updateStage(Stage.NeedToConfirm);
}
} else if (mUiStage == Stage.NeedToConfirm) {
- if (mFirstPin.equals(pin)) {
- boolean wasSecureBefore = mLockPatternUtils.isSecure(UserHandle.myUserId());
- final boolean required = getActivity().getIntent().getBooleanExtra(
- EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
- mLockPatternUtils.setCredentialRequiredToDecrypt(required);
- mLockPatternUtils.saveLockPassword(pin, mCurrentPassword, mRequestedQuality,
- UserHandle.myUserId());
-
- if (mHasChallenge) {
- startVerifyPassword(pin, wasSecureBefore);
- return;
- } else {
- getActivity().setResult(RESULT_FINISHED);
- }
- finishConfirmStage(wasSecureBefore);
+ if (mFirstPin.equals(mChosenPassword)) {
+ setNextEnabled(false);
+ mDone = true;
+ new SaveChosenPasswordAndFinish().execute();
} else {
CharSequence tmp = mPasswordEntry.getText();
if (tmp != null) {
@@ -557,7 +580,6 @@ public class ChooseLockPassword extends SettingsActivity {
private void finishConfirmStage(boolean wasSecureBefore) {
getActivity().finish();
- mDone = true;
if (!wasSecureBefore) {
Intent intent = getRedactionInterstitialIntent(getActivity());
if (intent != null) {
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 087a23e..026fd46 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -346,7 +346,6 @@ public class ChooseLockPattern extends SettingsActivity {
}
private Stage mUiStage = Stage.Introduction;
- private boolean mDone = false;
private Runnable mClearPatternRunnable = new Runnable() {
public void run() {
@@ -435,7 +434,6 @@ public class ChooseLockPattern extends SettingsActivity {
}
updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]);
}
- mDone = false;
}
@Override
@@ -483,7 +481,7 @@ public class ChooseLockPattern extends SettingsActivity {
throw new IllegalStateException("expected ui stage " + Stage.ChoiceConfirmed
+ " when button is " + RightButtonMode.Confirm);
}
- saveChosenPatternAndFinish();
+ new SaveChosenPatternAndFinish().execute();
} else if (mUiStage.rightMode == RightButtonMode.Ok) {
if (mUiStage != Stage.HelpScreen) {
throw new IllegalStateException("Help screen is only mode with ok button, "
@@ -623,34 +621,49 @@ public class ChooseLockPattern extends SettingsActivity {
mLockPatternView.postDelayed(mClearPatternRunnable, WRONG_PATTERN_CLEAR_TIMEOUT_MS);
}
- private void saveChosenPatternAndFinish() {
- if (mDone) return;
- LockPatternUtils utils = mChooseLockSettingsHelper.utils();
- final boolean lockVirgin = !utils.isPatternEverChosen(UserHandle.myUserId());
+ private class SaveChosenPatternAndFinish extends AsyncTask<Void,Void,Void> {
+ boolean mLockVirgin;
+ LockPatternUtils mUtils;
+ boolean mWasSecureBefore;
- boolean wasSecureBefore = utils.isSecure(UserHandle.myUserId());
+ @Override
+ protected void onPreExecute(){
+ setRightButtonEnabled(false);
+ mUtils = mChooseLockSettingsHelper.utils();
+ mLockVirgin = !mUtils.isPatternEverChosen(UserHandle.myUserId());
- final boolean required = getActivity().getIntent().getBooleanExtra(
+ mWasSecureBefore = mUtils.isSecure(UserHandle.myUserId());
+
+ final boolean required = getActivity().getIntent().getBooleanExtra(
EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
- utils.setCredentialRequiredToDecrypt(required);
- utils.saveLockPattern(mChosenPattern, mCurrentPattern, UserHandle.myUserId());
+ mUtils.setCredentialRequiredToDecrypt(required);
+ }
- if (lockVirgin) {
- utils.setVisiblePatternEnabled(true, UserHandle.myUserId());
+ @Override
+ protected Void doInBackground(Void... params){
+ mUtils.saveLockPattern(mChosenPattern, mCurrentPattern, UserHandle.myUserId());
+ return null;
}
- if (mHasChallenge) {
- startVerifyPattern(utils, wasSecureBefore);
- } else {
- if (!wasSecureBefore) {
- Intent intent = getRedactionInterstitialIntent(getActivity());
- if (intent != null) {
- startActivity(intent);
+ @Override
+ protected void onPostExecute(Void param) {
+ if (mLockVirgin) {
+ mUtils.setVisiblePatternEnabled(true, UserHandle.myUserId());
+ }
+
+ if (mHasChallenge) {
+ startVerifyPattern(mUtils, mWasSecureBefore);
+ } else {
+ if (!mWasSecureBefore) {
+ Intent intent = getRedactionInterstitialIntent(getActivity());
+ if (intent != null) {
+ startActivity(intent);
+ }
}
+ getActivity().setResult(RESULT_FINISHED);
+ doFinish();
}
- getActivity().setResult(RESULT_FINISHED);
- doFinish();
}
}
@@ -693,7 +706,6 @@ public class ChooseLockPattern extends SettingsActivity {
private void doFinish() {
getActivity().finish();
- mDone = true;
}
}
}
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index eef3c6b..d2daac8 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -22,6 +22,7 @@ import com.android.settings.DropDownPreference.Callback;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
+import static android.provider.Settings.Secure.CAMERA_GESTURE_DISABLED;
import static android.provider.Settings.Secure.DOUBLE_TAP_TO_WAKE;
import static android.provider.Settings.Secure.DOZE_ENABLED;
import static android.provider.Settings.Secure.WAKE_GESTURE_ENABLED;
@@ -74,6 +75,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private static final String KEY_AUTO_BRIGHTNESS = "auto_brightness";
private static final String KEY_AUTO_ROTATE = "auto_rotate";
private static final String KEY_NIGHT_MODE = "night_mode";
+ private static final String KEY_CAMERA_GESTURE = "camera_gesture";
private static final int DLG_GLOBAL_CHANGE_WARNING = 1;
@@ -88,6 +90,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private SwitchPreference mDozePreference;
private SwitchPreference mTapToWakePreference;
private SwitchPreference mAutoBrightnessPreference;
+ private SwitchPreference mCameraGesturePreference;
@Override
protected int getMetricsCategory() {
@@ -149,6 +152,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
removePreference(KEY_TAP_TO_WAKE);
}
+ if (isCameraGestureAvailable(getResources())) {
+ mCameraGesturePreference = (SwitchPreference) findPreference(KEY_CAMERA_GESTURE);
+ mCameraGesturePreference.setOnPreferenceChangeListener(this);
+ } else {
+ removePreference(KEY_CAMERA_GESTURE);
+ }
+
if (RotationPolicy.isRotationLockToggleVisible(activity)) {
DropDownPreference rotatePreference =
(DropDownPreference) findPreference(KEY_AUTO_ROTATE);
@@ -224,6 +234,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
return res.getBoolean(com.android.internal.R.bool.config_automatic_brightness_available);
}
+ private static boolean isCameraGestureAvailable(Resources res) {
+ boolean configSet = res.getInteger(
+ com.android.internal.R.integer.config_cameraLaunchGestureSensorType) != -1;
+ return configSet &&
+ !SystemProperties.getBoolean("gesture.disable_camera_launch", false);
+ }
+
private void updateTimeoutPreferenceDescription(long currentTimeout) {
ListPreference preference = mScreenTimeoutPreference;
String summary;
@@ -370,6 +387,12 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
int value = Settings.Secure.getInt(getContentResolver(), DOUBLE_TAP_TO_WAKE, 0);
mTapToWakePreference.setChecked(value != 0);
}
+
+ // Update camera gesture if it is available.
+ if (mCameraGesturePreference != null) {
+ int value = Settings.Secure.getInt(getContentResolver(), CAMERA_GESTURE_DISABLED, 0);
+ mCameraGesturePreference.setChecked(value == 0);
+ }
}
private void updateScreenSaverSummary() {
@@ -425,6 +448,11 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
boolean value = (Boolean) objValue;
Settings.Secure.putInt(getContentResolver(), DOUBLE_TAP_TO_WAKE, value ? 1 : 0);
}
+ if (preference == mCameraGesturePreference) {
+ boolean value = (Boolean) objValue;
+ Settings.Secure.putInt(getContentResolver(), CAMERA_GESTURE_DISABLED,
+ value ? 0 : 1 /* Backwards because setting is for disabling */);
+ }
if (preference == mNightModePreference) {
try {
final int value = Integer.parseInt((String) objValue);
@@ -493,6 +521,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
if (!isTapToWakeAvailable(context.getResources())) {
result.add(KEY_TAP_TO_WAKE);
}
+ if (!isCameraGestureAvailable(context.getResources())) {
+ result.add(KEY_CAMERA_GESTURE);
+ }
return result;
}
};
diff --git a/src/com/android/settings/InstrumentedActivity.java b/src/com/android/settings/InstrumentedActivity.java
new file mode 100644
index 0000000..4a0e03a
--- /dev/null
+++ b/src/com/android/settings/InstrumentedActivity.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2015 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;
+
+import com.android.internal.logging.MetricsLogger;
+
+import android.app.Activity;
+
+/**
+ * Instrumented activity that logs visibility state.
+ */
+public abstract class InstrumentedActivity extends Activity {
+ /**
+ * Declare the view of this category.
+ *
+ * Categories are defined in {@link com.android.internal.logging.MetricsLogger}
+ * or if there is no relevant existing category you may define one in
+ * {@link com.android.settings.InstrumentedFragment}.
+ */
+ protected abstract int getMetricsCategory();
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ MetricsLogger.visible(this, getMetricsCategory());
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ MetricsLogger.hidden(this, getMetricsCategory());
+ }
+}
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index baf04d4..b957c38 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -505,7 +505,10 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
}
public void finish() {
- getActivity().onBackPressed();
+ Activity activity = getActivity();
+ if (activity != null) {
+ activity.onBackPressed();
+ }
}
public boolean startFragment(Fragment caller, String fragmentClass, int titleRes,
diff --git a/src/com/android/settings/deviceinfo/UsbBackend.java b/src/com/android/settings/deviceinfo/UsbBackend.java
new file mode 100644
index 0000000..846d6e3
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/UsbBackend.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2015 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.deviceinfo;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.hardware.usb.UsbManager;
+import android.hardware.usb.UsbPort;
+import android.hardware.usb.UsbPortStatus;
+import android.os.UserManager;
+
+public class UsbBackend {
+
+ private static final int MODE_POWER_MASK = 0x01;
+ public static final int MODE_POWER_SINK = 0x00;
+ public static final int MODE_POWER_SOURCE = 0x01;
+
+ private static final int MODE_DATA_MASK = 0x03 << 1;
+ public static final int MODE_DATA_NONE = 0x00 << 1;
+ public static final int MODE_DATA_MTP = 0x01 << 1;
+ public static final int MODE_DATA_PTP = 0x02 << 1;
+ public static final int MODE_DATA_MIDI = 0x03 << 1;
+
+ private final boolean mRestricted;
+
+ private UserManager mUserManager;
+ private UsbManager mUsbManager;
+ private UsbPort mPort;
+ private UsbPortStatus mPortStatus;
+
+ private boolean mIsUnlocked;
+
+ public UsbBackend(Context context) {
+ Intent intent = context.registerReceiver(null,
+ new IntentFilter(UsbManager.ACTION_USB_STATE));
+ mIsUnlocked = intent.getBooleanExtra(UsbManager.USB_DATA_UNLOCKED, false);
+
+ mUserManager = UserManager.get(context);
+ mUsbManager = context.getSystemService(UsbManager.class);
+
+ mRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
+ UsbPort[] ports = mUsbManager.getPorts();
+ // For now look for a connected port, in the future we should identify port in the
+ // notification and pick based on that.
+ final int N = ports.length;
+ for (int i = 0; i < N; i++) {
+ UsbPortStatus status = mUsbManager.getPortStatus(ports[i]);
+ if (status.isConnected()) {
+ mPort = ports[i];
+ mPortStatus = status;
+ break;
+ }
+ }
+ }
+
+ public int getCurrentMode() {
+ if (mPort != null) {
+ int power = mPortStatus.getCurrentPowerRole() == UsbPort.POWER_ROLE_SOURCE
+ ? MODE_POWER_SOURCE : MODE_POWER_SINK;
+ return power | (mPortStatus.getCurrentDataRole() == UsbPort.DATA_ROLE_DEVICE
+ ? getUsbDataMode() : MODE_DATA_NONE);
+ }
+ return MODE_POWER_SINK | getUsbDataMode();
+ }
+
+ public int getUsbDataMode() {
+ if (!mIsUnlocked) {
+ return MODE_DATA_NONE;
+ } else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_MTP)) {
+ return MODE_DATA_MTP;
+ } else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_PTP)) {
+ return MODE_DATA_PTP;
+ } else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_MIDI)) {
+ return MODE_DATA_MIDI;
+ }
+ return MODE_DATA_NONE; // ...
+ }
+
+ private void setUsbFunction(int mode) {
+ switch (mode) {
+ case MODE_DATA_MTP:
+ mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP);
+ mUsbManager.setUsbDataUnlocked(true);
+ break;
+ case MODE_DATA_PTP:
+ mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_PTP);
+ mUsbManager.setUsbDataUnlocked(true);
+ break;
+ case MODE_DATA_MIDI:
+ mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MIDI);
+ mUsbManager.setUsbDataUnlocked(true);
+ break;
+ default:
+ mUsbManager.setCurrentFunction(null);
+ mUsbManager.setUsbDataUnlocked(false);
+ break;
+ }
+ }
+
+ public void setMode(int mode) {
+ if (mPort != null) {
+ int powerRole = modeToPower(mode);
+ // If we aren't using any data modes and we support host mode, then go to host mode
+ // so maybe? the other device can provide data if it wants, otherwise go into device
+ // mode because we have no choice.
+ int dataRole = (mode & MODE_DATA_MASK) == MODE_DATA_NONE
+ && mPortStatus.isRoleCombinationSupported(powerRole, UsbPort.DATA_ROLE_HOST)
+ ? UsbPort.DATA_ROLE_HOST : UsbPort.DATA_ROLE_DEVICE;
+ mUsbManager.setPortRoles(mPort, powerRole, dataRole);
+ }
+ setUsbFunction(mode & MODE_DATA_MASK);
+ }
+
+ private int modeToPower(int mode) {
+ return (mode & MODE_POWER_MASK) == MODE_POWER_SOURCE
+ ? UsbPort.POWER_ROLE_SOURCE : UsbPort.POWER_ROLE_SINK;
+ }
+
+ public boolean isModeSupported(int mode) {
+ if (mRestricted && (mode & MODE_DATA_MASK) != MODE_DATA_NONE
+ && (mode & MODE_DATA_MASK) != MODE_DATA_MIDI) {
+ // No USB data modes are supported.
+ return false;
+ }
+ if (mPort != null) {
+ int power = modeToPower(mode);
+ if ((mode & MODE_DATA_MASK) != 0) {
+ // We have a port and data, need to be in device mode.
+ return mPortStatus.isRoleCombinationSupported(power,
+ UsbPort.DATA_ROLE_DEVICE);
+ } else {
+ // No data needed, we can do this power mode in either device or host.
+ return mPortStatus.isRoleCombinationSupported(power, UsbPort.DATA_ROLE_DEVICE)
+ || mPortStatus.isRoleCombinationSupported(power, UsbPort.DATA_ROLE_HOST);
+ }
+ }
+ // No port, support sink modes only.
+ return (mode & MODE_POWER_MASK) != MODE_POWER_SOURCE;
+ }
+} \ No newline at end of file
diff --git a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java
index 4bdabd5..77fc388 100644
--- a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java
+++ b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java
@@ -20,13 +20,14 @@ import android.annotation.Nullable;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.hardware.usb.UsbManager;
import android.os.Bundle;
-import android.os.UserManager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Checkable;
+import android.widget.LinearLayout;
+import android.widget.TextView;
import com.android.settings.R;
@@ -36,83 +37,102 @@ import com.android.settings.R;
*/
public class UsbModeChooserActivity extends Activity {
- private UsbManager mUsbManager;
- private String[] mFunctions;
- private boolean mIsUnlocked;
+ public static final int[] DEFAULT_MODES = {
+ UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE,
+ UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE,
+ UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP,
+ UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP,
+ UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI
+ };
+
+ private UsbBackend mBackend;
+ private AlertDialog mDialog;
+ private LayoutInflater mLayoutInflater;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
- Intent i = getBaseContext().registerReceiver(null, new IntentFilter(UsbManager.ACTION_USB_STATE));
- mIsUnlocked = i.getBooleanExtra(UsbManager.USB_DATA_UNLOCKED, false);
super.onCreate(savedInstanceState);
- mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
- boolean isFileTransferRestricted = ((UserManager) getSystemService(Context.USER_SERVICE))
- .hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
- CharSequence[] items;
- if (isFileTransferRestricted) {
- items = new CharSequence[] { getText(R.string.usb_use_charging_only), getText(R.string.usb_use_MIDI)};
- mFunctions = new String[] { null, UsbManager.USB_FUNCTION_MIDI };
- } else {
- items = new CharSequence[] {
- getText(R.string.usb_use_charging_only), getText(R.string.usb_use_file_transfers),
- getText(R.string.usb_use_photo_transfers), getText(R.string.usb_use_MIDI)};
- mFunctions = new String[] { null, UsbManager.USB_FUNCTION_MTP,
- UsbManager.USB_FUNCTION_PTP, UsbManager.USB_FUNCTION_MIDI };
- }
- final AlertDialog levelDialog;
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(R.string.usb_use);
+ mLayoutInflater = LayoutInflater.from(this);
- builder.setSingleChoiceItems(items, getCurrentFunction(),
- new DialogInterface.OnClickListener() {
+ mDialog = new AlertDialog.Builder(this)
+ .setTitle(R.string.usb_use)
+ .setView(R.layout.usb_dialog_container)
+ .setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ finish();
+ }
+ })
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- if (!ActivityManager.isUserAMonkey()) {
- setCurrentFunction(which);
- }
- dialog.dismiss();
- UsbModeChooserActivity.this.finish();
+ finish();
}
- });
- builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
- @Override
- public void onDismiss(DialogInterface dialog) {
- UsbModeChooserActivity.this.finish();
+ }).create();
+ mDialog.show();
+
+ LinearLayout container = (LinearLayout) mDialog.findViewById(R.id.container);
+
+ mBackend = new UsbBackend(this);
+ int current = mBackend.getCurrentMode();
+ for (int i = 0; i < DEFAULT_MODES.length; i++) {
+ if (mBackend.isModeSupported(DEFAULT_MODES[i])) {
+ inflateOption(DEFAULT_MODES[i], current == DEFAULT_MODES[i], container);
}
- });
- builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ }
+ }
+
+ private void inflateOption(final int mode, boolean selected, LinearLayout container) {
+ View v = mLayoutInflater.inflate(R.layout.radio_with_summary, container, false);
+
+ ((TextView) v.findViewById(android.R.id.title)).setText(getTitle(mode));
+ ((TextView) v.findViewById(android.R.id.summary)).setText(getSummary(mode));
+
+ v.setOnClickListener(new OnClickListener() {
@Override
- public void onClick(DialogInterface dialog, int which) {
- UsbModeChooserActivity.this.finish();
+ public void onClick(View v) {
+ if (!ActivityManager.isUserAMonkey()) {
+ mBackend.setMode(mode);
+ }
+ mDialog.dismiss();
+ finish();
}
});
- levelDialog = builder.create();
- levelDialog.show();
+ ((Checkable) v).setChecked(selected);
+ container.addView(v);
}
- private int getCurrentFunction() {
- if (!mIsUnlocked) {
- return 0;
- }
-
- for (int i = 1; i < mFunctions.length; i++) {
- if (mUsbManager.isFunctionEnabled(mFunctions[i])) {
- return i;
- }
+ private static int getSummary(int mode) {
+ switch (mode) {
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE:
+ return R.string.usb_use_charging_only_desc;
+ case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE:
+ return R.string.usb_use_power_only_desc;
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP:
+ return R.string.usb_use_file_transfers_desc;
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP:
+ return R.string.usb_use_photo_transfers_desc;
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI:
+ return R.string.usb_use_MIDI_desc;
}
return 0;
}
- private void setCurrentFunction(int which) {
- if (which == 0) {
- mUsbManager.setCurrentFunction(null);
- mUsbManager.setUsbDataUnlocked(false);
- return;
+ private static int getTitle(int mode) {
+ switch (mode) {
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE:
+ return R.string.usb_use_charging_only;
+ case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE:
+ return R.string.usb_use_power_only;
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP:
+ return R.string.usb_use_file_transfers;
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP:
+ return R.string.usb_use_photo_transfers;
+ case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI:
+ return R.string.usb_use_MIDI;
}
-
- mUsbManager.setCurrentFunction(mFunctions[which]);
- mUsbManager.setUsbDataUnlocked(true);
+ return 0;
}
}
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java
index 430f220..781efa3 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java
@@ -28,6 +28,7 @@ import android.widget.Button;
import android.widget.TextView;
import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.InstrumentedActivity;
import com.android.settings.R;
import com.android.setupwizardlib.SetupWizardLayout;
import com.android.setupwizardlib.view.NavigationBar;
@@ -35,7 +36,8 @@ import com.android.setupwizardlib.view.NavigationBar;
/**
* Base activity for all fingerprint enrollment steps.
*/
-public class FingerprintEnrollBase extends Activity implements View.OnClickListener {
+public abstract class FingerprintEnrollBase extends InstrumentedActivity
+ implements View.OnClickListener {
/**
* Used by the choose fingerprint wizard to indicate the wizard is
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index 5d4edbd..3d2ce4d 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -38,6 +38,7 @@ import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
@@ -380,6 +381,11 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase
}
};
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLLING;
+ }
+
public static class IconTouchDialog extends DialogFragment {
@Override
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
index bbed42c..8864822 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
@@ -21,6 +21,7 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
@@ -105,4 +106,9 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase {
finish();
}
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_FIND_SENSOR;
+ }
}
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
index 29f14d7..6691e20 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
@@ -25,6 +25,7 @@ import android.preference.Preference;
import android.view.View;
import android.widget.Button;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
import com.android.settings.fingerprint.FingerprintSettings.FingerprintPreference;
@@ -70,4 +71,9 @@ public class FingerprintEnrollFinish extends FingerprintEnrollBase {
}
super.onClick(v);
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_FINISH;
+ }
}
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
index de5bf24..beb1a8f 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
@@ -22,6 +22,7 @@ import android.os.Bundle;
import android.os.UserHandle;
import android.view.View;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.HelpUtils;
import com.android.settings.R;
@@ -92,4 +93,9 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase {
getString(R.string.help_url_fingerprint), getClass().getName());
startActivity(helpIntent);
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_INTRO;
+ }
}
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java b/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java
index e81b0ff..0990459 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java
@@ -21,6 +21,7 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
@@ -82,4 +83,9 @@ public class FingerprintEnrollOnboard extends FingerprintEnrollBase {
protected Intent getFindSensorIntent() {
return new Intent(this, FingerprintEnrollFindSensor.class);
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_ONBOARD;
+ }
}
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
index 6a47dc4..5b677f8 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -24,12 +24,14 @@ import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Handler;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.InstrumentedFragment;
/**
* Sidecar fragment to handle the state around fingerprint enrollment.
*/
-public class FingerprintEnrollSidecar extends Fragment {
+public class FingerprintEnrollSidecar extends InstrumentedFragment {
private int mEnrollmentSteps = -1;
private int mEnrollmentRemaining = 0;
@@ -140,6 +142,11 @@ public class FingerprintEnrollSidecar extends Fragment {
}
};
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_SIDECAR;
+ }
+
public interface Listener {
void onEnrollmentHelp(CharSequence helpString);
void onEnrollmentError(CharSequence errString);
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index a5c9963..1a6da2f 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -403,7 +403,7 @@ public class FingerprintSettings extends SubSettings {
}
private void showRenameDeleteDialog(final Fingerprint fp) {
- RenameDeleteDialog renameDeleteDialog = new RenameDeleteDialog();
+ RenameDeleteDialog renameDeleteDialog = new RenameDeleteDialog(getContext());
Bundle args = new Bundle();
args.putParcelable("fingerprint", fp);
renameDeleteDialog.setArguments(args);
@@ -527,6 +527,7 @@ public class FingerprintSettings extends SubSettings {
public static class RenameDeleteDialog extends DialogFragment {
+ private final Context mContext;
private Fingerprint mFp;
private EditText mDialogTextField;
private String mFingerName;
@@ -534,6 +535,10 @@ public class FingerprintSettings extends SubSettings {
private int mTextSelectionStart;
private int mTextSelectionEnd;
+ public RenameDeleteDialog(Context context) {
+ mContext = context;
+ }
+
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mFp = getArguments().getParcelable("fingerprint");
@@ -556,6 +561,9 @@ public class FingerprintSettings extends SubSettings {
if (DEBUG) {
Log.v(TAG, "rename " + name + " to " + newName);
}
+ MetricsLogger.action(mContext,
+ MetricsLogger.ACTION_FINGERPRINT_RENAME,
+ mFp.getFingerId());
FingerprintSettingsFragment parent
= (FingerprintSettingsFragment)
getTargetFragment();
@@ -598,6 +606,8 @@ public class FingerprintSettings extends SubSettings {
private void onDeleteClick(DialogInterface dialog) {
if (DEBUG) Log.v(TAG, "Removing fpId=" + mFp.getFingerId());
+ MetricsLogger.action(mContext, MetricsLogger.ACTION_FINGERPRINT_DELETE,
+ mFp.getFingerId());
FingerprintSettingsFragment parent
= (FingerprintSettingsFragment) getTargetFragment();
if (parent.mFingerprintManager.getEnrolledFingerprints().size() > 1) {
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
index fc7b803..0a3073c 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.view.View;
import android.widget.Button;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.setupwizardlib.view.NavigationBar;
@@ -71,4 +72,9 @@ public class SetupFingerprintEnrollEnrolling extends FingerprintEnrollEnrolling
setResult(RESULT_SKIP);
finish();
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLLING_SETUP;
+ }
}
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java
index 17c0671..1483c83 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.view.View;
import android.widget.Button;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
@@ -70,4 +71,9 @@ public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSenso
public void onNavigateNext() {
onNextButtonClick();
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_FIND_SENSOR_SETUP;
+ }
}
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java
index 351cd57..8f37a11 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java
@@ -22,6 +22,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.TextView;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
@@ -78,4 +79,9 @@ public class SetupFingerprintEnrollFinish extends FingerprintEnrollFinish
public void onNavigateNext() {
onNextButtonClick();
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_FINISH_SETUP;
+ }
}
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
index 416d53f..c7e39e5 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.view.View;
import android.widget.Button;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.setupwizardlib.view.NavigationBar;
@@ -74,4 +75,9 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu
public void onNavigateNext() {
onNextButtonClick();
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_INTRO_SETUP;
+ }
}
diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java
index bee0cde..7fca35a 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.view.View;
import android.widget.Button;
+import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
import com.android.settings.SetupChooseLockGeneric;
import com.android.settings.SetupWizardUtils;
@@ -75,4 +76,9 @@ public class SetupFingerprintEnrollOnboard extends FingerprintEnrollOnboard
public void onNavigateNext() {
onNextButtonClick();
}
+
+ @Override
+ protected int getMetricsCategory() {
+ return MetricsLogger.FINGERPRINT_ENROLL_ONBOARD_SETUP;
+ }
}
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 1a4b1dd..774c54b 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -458,9 +458,17 @@ public class WifiConfigController implements TextWatcher,
String clientCert = (String) mEapUserCertSpinner.getSelectedItem();
if (clientCert.equals(unspecifiedCert)) clientCert = "";
config.enterpriseConfig.setClientCertificateAlias(clientCert);
- config.enterpriseConfig.setIdentity(mEapIdentityView.getText().toString());
- config.enterpriseConfig.setAnonymousIdentity(
- mEapAnonymousView.getText().toString());
+ if (eapMethod == Eap.SIM || eapMethod == Eap.AKA || eapMethod == Eap.AKA_PRIME) {
+ config.enterpriseConfig.setIdentity("");
+ config.enterpriseConfig.setAnonymousIdentity("");
+ } else if (eapMethod == Eap.PWD) {
+ config.enterpriseConfig.setIdentity(mEapIdentityView.getText().toString());
+ config.enterpriseConfig.setAnonymousIdentity("");
+ } else {
+ config.enterpriseConfig.setIdentity(mEapIdentityView.getText().toString());
+ config.enterpriseConfig.setAnonymousIdentity(
+ mEapAnonymousView.getText().toString());
+ }
if (mPasswordView.isShown()) {
// For security reasons, a previous password is not displayed to user.