Update titles & messages for password enrolment flows
Show different titles and description messages when enrolling password under various conditions: * personal lock verus work lock * adding a new lock versus updating existing lock * enrolling a PIN verus password versus pattern Add icons to options in screen lock picker. Add an option to redirect to work lock flow if the admin has set device-wide password requirement. Bug: 183922696 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.password Change-Id: I40417b113814659d3226a44eb7f9d553386e3c58
This commit is contained in:
@@ -47,6 +47,9 @@ import android.service.persistentdata.PersistentDataBlockManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.EventLog;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -62,12 +65,14 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.internal.widget.LockscreenCredential;
|
||||
import com.android.settings.EncryptionInterstitial;
|
||||
import com.android.settings.EventLogTags;
|
||||
import com.android.settings.LinkifyUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.biometrics.BiometricEnrollActivity;
|
||||
import com.android.settings.biometrics.BiometricEnrollBase;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.search.SearchFeatureProvider;
|
||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
@@ -154,7 +159,13 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
private FingerprintManager mFingerprintManager;
|
||||
private FaceManager mFaceManager;
|
||||
private int mUserId;
|
||||
private boolean mIsManagedProfile;
|
||||
private ManagedLockPasswordProvider mManagedPasswordProvider;
|
||||
/**
|
||||
* Whether the activity is launched by admins via
|
||||
* {@link DevicePolicyManager#ACTION_SET_NEW_PASSWORD} or
|
||||
* {@link DevicePolicyManager#ACTION_SET_NEW_PARENT_PROFILE_PASSWORD}
|
||||
*/
|
||||
private boolean mIsSetNewPassword = false;
|
||||
private UserManager mUserManager;
|
||||
private ChooseLockGenericController mController;
|
||||
@@ -215,6 +226,10 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
mPasswordConfirmed = !confirmCredentials;
|
||||
mUserPassword = intent.getParcelableExtra(
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
|
||||
} else if (arguments != null) {
|
||||
mUserPassword = (LockscreenCredential) arguments.getParcelable(
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
|
||||
mPasswordConfirmed = mUserPassword != null;
|
||||
}
|
||||
|
||||
mRequestGatekeeperPasswordHandle = intent.getBooleanExtra(
|
||||
@@ -261,6 +276,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
UserManager.get(activity),
|
||||
arguments,
|
||||
intent.getExtras()).getIdentifier();
|
||||
mIsManagedProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
|
||||
mController = new ChooseLockGenericController(
|
||||
getContext(), mUserId, mRequestedMinComplexity,
|
||||
mOnlyEnforceDevicePasswordRequirement,
|
||||
@@ -278,12 +294,6 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
mCallerAppName = isComplexityProvidedByAdmin ? null :
|
||||
intent.getStringExtra(EXTRA_KEY_CALLER_APP_NAME);
|
||||
|
||||
if (ACTION_SET_NEW_PASSWORD.equals(chooseLockAction)
|
||||
&& UserManager.get(activity).isManagedProfile(mUserId)
|
||||
&& mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId)) {
|
||||
activity.setTitle(R.string.lock_settings_picker_title_profile);
|
||||
}
|
||||
|
||||
mManagedPasswordProvider = ManagedLockPasswordProvider.get(activity, mUserId);
|
||||
|
||||
if (mPasswordConfirmed) {
|
||||
@@ -300,7 +310,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
.setReturnCredentials(true)
|
||||
.setUserId(mUserId);
|
||||
boolean managedProfileWithUnifiedLock =
|
||||
UserManager.get(activity).isManagedProfile(mUserId)
|
||||
mIsManagedProfile
|
||||
&& !mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId);
|
||||
boolean skipConfirmation = managedProfileWithUnifiedLock && !mIsSetNewPassword;
|
||||
if (skipConfirmation || !builder.show()) {
|
||||
@@ -313,6 +323,40 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
addHeaderView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
updateActivityTitle();
|
||||
return super.onCreateView(inflater, container, savedInstanceState);
|
||||
}
|
||||
|
||||
private void updateActivityTitle() {
|
||||
if (mLockPatternUtils == null) {
|
||||
// mLockPatternUtils will be uninitialized if ChooseLockGenericFragment.onCreate()
|
||||
// finishes early.
|
||||
return;
|
||||
}
|
||||
final boolean updateExistingLock;
|
||||
if (mIsManagedProfile) {
|
||||
// Going from unified challenge -> separate challenge is considered as adding
|
||||
// a new lock to the profile, while if the profile already has a separate challenge
|
||||
// it's an update.
|
||||
updateExistingLock = mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId);
|
||||
if (updateExistingLock) {
|
||||
getActivity().setTitle(R.string.lock_settings_picker_update_profile_lock_title);
|
||||
} else {
|
||||
getActivity().setTitle(R.string.lock_settings_picker_new_profile_lock_title);
|
||||
}
|
||||
} else {
|
||||
updateExistingLock = mLockPatternUtils.isSecure(mUserId);
|
||||
if (updateExistingLock) {
|
||||
getActivity().setTitle(R.string.lock_settings_picker_update_lock_title);
|
||||
} else {
|
||||
getActivity().setTitle(R.string.lock_settings_picker_new_lock_title);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean canRunBeforeDeviceProvisioned() {
|
||||
PersistentDataBlockManager pdbm = (PersistentDataBlockManager)
|
||||
getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
|
||||
@@ -333,14 +377,48 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
if (mForFingerprint) {
|
||||
if (mIsSetNewPassword) {
|
||||
textView.setText(R.string.fingerprint_unlock_title);
|
||||
} else {
|
||||
textView.setText(R.string.lock_settings_picker_biometric_message);
|
||||
}
|
||||
} else if (mForFace) {
|
||||
if (mIsSetNewPassword) {
|
||||
textView.setText(R.string.face_unlock_title);
|
||||
} else {
|
||||
textView.setText(R.string.lock_settings_picker_biometric_message);
|
||||
}
|
||||
} else if (mForBiometrics) {
|
||||
if (mIsSetNewPassword) {
|
||||
textView.setText(R.string.biometrics_unlock_title);
|
||||
} else {
|
||||
textView.setText(R.string.lock_settings_picker_biometric_message);
|
||||
}
|
||||
} else {
|
||||
if (mIsManagedProfile) {
|
||||
textView.setText(R.string.lock_settings_picker_profile_message);
|
||||
} else {
|
||||
int profileUserId = Utils.getManagedProfileId(mUserManager, mUserId);
|
||||
if (mController.isScreenLockRestrictedByAdmin()
|
||||
&& profileUserId != UserHandle.USER_NULL) {
|
||||
final StringBuilder description = new StringBuilder(getText(
|
||||
R.string.lock_settings_picker_admin_restricted_personal_message));
|
||||
final LinkifyUtils.OnClickListener clickListener = () -> {
|
||||
final Bundle extras = new Bundle();
|
||||
extras.putInt(Intent.EXTRA_USER_ID, profileUserId);
|
||||
if (mUserPassword != null) {
|
||||
extras.putParcelable(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD,
|
||||
mUserPassword);
|
||||
}
|
||||
new SubSettingLauncher(getActivity())
|
||||
.setDestination(ChooseLockGenericFragment.class.getName())
|
||||
.setSourceMetricsCategory(getMetricsCategory())
|
||||
.setArguments(extras)
|
||||
.launch();
|
||||
finish();
|
||||
};
|
||||
LinkifyUtils.linkify(textView, description, clickListener);
|
||||
} else {
|
||||
textView.setText("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -891,8 +969,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
}
|
||||
|
||||
private int getResIdForFactoryResetProtectionWarningTitle() {
|
||||
boolean isProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
|
||||
return isProfile ? R.string.unlock_disable_frp_warning_title_profile
|
||||
return mIsManagedProfile ? R.string.unlock_disable_frp_warning_title_profile
|
||||
: R.string.unlock_disable_frp_warning_title;
|
||||
}
|
||||
|
||||
@@ -903,26 +980,25 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
} else {
|
||||
hasFingerprints = false;
|
||||
}
|
||||
boolean isProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
|
||||
switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) {
|
||||
case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
|
||||
if (hasFingerprints && isProfile) {
|
||||
if (hasFingerprints && mIsManagedProfile) {
|
||||
return R.string
|
||||
.unlock_disable_frp_warning_content_pattern_fingerprint_profile;
|
||||
} else if (hasFingerprints && !isProfile) {
|
||||
} else if (hasFingerprints && !mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_pattern_fingerprint;
|
||||
} else if (isProfile) {
|
||||
} else if (mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_pattern_profile;
|
||||
} else {
|
||||
return R.string.unlock_disable_frp_warning_content_pattern;
|
||||
}
|
||||
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
|
||||
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
|
||||
if (hasFingerprints && isProfile) {
|
||||
if (hasFingerprints && mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_pin_fingerprint_profile;
|
||||
} else if (hasFingerprints && !isProfile) {
|
||||
} else if (hasFingerprints && !mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_pin_fingerprint;
|
||||
} else if (isProfile) {
|
||||
} else if (mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_pin_profile;
|
||||
} else {
|
||||
return R.string.unlock_disable_frp_warning_content_pin;
|
||||
@@ -931,23 +1007,23 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
|
||||
case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
|
||||
case DevicePolicyManager.PASSWORD_QUALITY_MANAGED:
|
||||
if (hasFingerprints && isProfile) {
|
||||
if (hasFingerprints && mIsManagedProfile) {
|
||||
return R.string
|
||||
.unlock_disable_frp_warning_content_password_fingerprint_profile;
|
||||
} else if (hasFingerprints && !isProfile) {
|
||||
} else if (hasFingerprints && !mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_password_fingerprint;
|
||||
} else if (isProfile) {
|
||||
} else if (mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_password_profile;
|
||||
} else {
|
||||
return R.string.unlock_disable_frp_warning_content_password;
|
||||
}
|
||||
default:
|
||||
if (hasFingerprints && isProfile) {
|
||||
if (hasFingerprints && mIsManagedProfile) {
|
||||
return R.string
|
||||
.unlock_disable_frp_warning_content_unknown_fingerprint_profile;
|
||||
} else if (hasFingerprints && !isProfile) {
|
||||
} else if (hasFingerprints && !mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_unknown_fingerprint;
|
||||
} else if (isProfile) {
|
||||
} else if (mIsManagedProfile) {
|
||||
return R.string.unlock_disable_frp_warning_content_unknown_profile;
|
||||
} else {
|
||||
return R.string.unlock_disable_frp_warning_content_unknown;
|
||||
|
@@ -18,6 +18,8 @@ package com.android.settings.password;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
|
||||
|
||||
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
|
||||
|
||||
import android.app.admin.DevicePolicyManager.PasswordComplexity;
|
||||
import android.app.admin.PasswordMetrics;
|
||||
import android.content.Context;
|
||||
@@ -88,7 +90,7 @@ public class ChooseLockGenericController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the highest quality among the specified {@code quality}, the password requiremnet
|
||||
* Returns the highest quality among the specified {@code quality}, the password requirement
|
||||
* set by device admins (legacy password quality metrics and password complexity), and the
|
||||
* min password complexity requested by the calling app.
|
||||
*/
|
||||
@@ -207,4 +209,9 @@ public class ChooseLockGenericController {
|
||||
mLockPatternUtils.getRequestedPasswordComplexity(
|
||||
mUserId, mDevicePasswordRequirementOnly));
|
||||
}
|
||||
|
||||
public boolean isScreenLockRestrictedByAdmin() {
|
||||
return getAggregatedPasswordMetrics().credType != CREDENTIAL_TYPE_NONE
|
||||
|| getAggregatedPasswordComplexity() != PASSWORD_COMPLEXITY_NONE;
|
||||
}
|
||||
}
|
||||
|
@@ -49,6 +49,7 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.Selection;
|
||||
@@ -207,23 +208,6 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final boolean forFingerprint = getIntent()
|
||||
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
|
||||
final boolean forFace = getIntent()
|
||||
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, false);
|
||||
final boolean forBiometrics = getIntent()
|
||||
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, false);
|
||||
|
||||
CharSequence msg = getText(R.string.lockpassword_choose_your_screen_lock_header);
|
||||
if (forFingerprint) {
|
||||
msg = getText(R.string.lockpassword_choose_your_password_header_for_fingerprint);
|
||||
} else if (forFace) {
|
||||
msg = getText(R.string.lockpassword_choose_your_password_header_for_face);
|
||||
} else if (forBiometrics) {
|
||||
msg = getText(R.string.lockpassword_choose_your_password_header_for_biometrics);
|
||||
}
|
||||
|
||||
setTitle(msg);
|
||||
findViewById(R.id.content_parent).setFitsSystemWindows(false);
|
||||
}
|
||||
|
||||
@@ -262,6 +246,7 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
private LockscreenCredential mFirstPassword;
|
||||
private RecyclerView mPasswordRestrictionView;
|
||||
protected boolean mIsAlphaMode;
|
||||
protected boolean mIsManagedProfile;
|
||||
protected FooterButton mSkipOrClearButton;
|
||||
private FooterButton mNextButton;
|
||||
private TextView mMessage;
|
||||
@@ -277,33 +262,33 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
protected enum Stage {
|
||||
|
||||
Introduction(
|
||||
R.string.lockpassword_choose_your_screen_lock_header, // password
|
||||
R.string.lockpassword_choose_your_password_header, // password
|
||||
R.string.lockpassword_choose_your_profile_password_header,
|
||||
R.string.lockpassword_choose_your_password_header_for_fingerprint,
|
||||
R.string.lockpassword_choose_your_password_header_for_face,
|
||||
R.string.lockpassword_choose_your_password_header_for_biometrics,
|
||||
R.string.lockpassword_choose_your_screen_lock_header, // pin
|
||||
R.string.lockpassword_choose_your_pin_header, // pin
|
||||
R.string.lockpassword_choose_your_profile_pin_header,
|
||||
R.string.lockpassword_choose_your_pin_header_for_fingerprint,
|
||||
R.string.lockpassword_choose_your_pin_header_for_face,
|
||||
R.string.lockpassword_choose_your_pin_header_for_biometrics,
|
||||
R.string.lockpassword_choose_your_password_message, // added security message
|
||||
R.string.lock_settings_picker_biometrics_added_security_message,
|
||||
R.string.lockpassword_choose_your_pin_message,
|
||||
R.string.lock_settings_picker_biometrics_added_security_message,
|
||||
R.string.next_label),
|
||||
|
||||
NeedToConfirm(
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_reenter_your_profile_password_header,
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_confirm_your_password_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
R.string.lockpassword_reenter_your_profile_pin_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
R.string.lockpassword_confirm_your_pin_header,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
R.string.lockpassword_confirm_label),
|
||||
|
||||
ConfirmWrong(
|
||||
@@ -311,36 +296,36 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_passwords_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
R.string.lockpassword_confirm_pins_dont_match,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
R.string.lockpassword_confirm_label);
|
||||
|
||||
Stage(int hintInAlpha,
|
||||
Stage(int hintInAlpha, int hintInAlphaForProfile,
|
||||
int hintInAlphaForFingerprint, int hintInAlphaForFace, int hintInAlphaForBiometrics,
|
||||
int hintInNumeric,
|
||||
int hintInNumeric, int hintInNumericForProfile,
|
||||
int hintInNumericForFingerprint, int hintInNumericForFace, int hintInNumericForBiometrics,
|
||||
int messageInAlpha, int messageInAlphaForBiometrics,
|
||||
int messageInNumeric, int messageInNumericForBiometrics,
|
||||
int messageInAlphaForBiometrics,
|
||||
int messageInNumericForBiometrics,
|
||||
int nextButtonText) {
|
||||
this.alphaHint = hintInAlpha;
|
||||
this.alphaHintForProfile = hintInAlphaForProfile;
|
||||
this.alphaHintForFingerprint = hintInAlphaForFingerprint;
|
||||
this.alphaHintForFace = hintInAlphaForFace;
|
||||
this.alphaHintForBiometrics = hintInAlphaForBiometrics;
|
||||
|
||||
this.numericHint = hintInNumeric;
|
||||
this.numericHintForProfile = hintInNumericForProfile;
|
||||
this.numericHintForFingerprint = hintInNumericForFingerprint;
|
||||
this.numericHintForFace = hintInNumericForFace;
|
||||
this.numericHintForBiometrics = hintInNumericForBiometrics;
|
||||
|
||||
this.alphaMessage = messageInAlpha;
|
||||
this.alphaMessageForBiometrics = messageInAlphaForBiometrics;
|
||||
this.numericMessage = messageInNumeric;
|
||||
this.numericMessageForBiometrics = messageInNumericForBiometrics;
|
||||
this.buttonText = nextButtonText;
|
||||
}
|
||||
@@ -352,23 +337,23 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
// Password
|
||||
public final int alphaHint;
|
||||
public final int alphaHintForProfile;
|
||||
public final int alphaHintForFingerprint;
|
||||
public final int alphaHintForFace;
|
||||
public final int alphaHintForBiometrics;
|
||||
|
||||
// PIN
|
||||
public final int numericHint;
|
||||
public final int numericHintForProfile;
|
||||
public final int numericHintForFingerprint;
|
||||
public final int numericHintForFace;
|
||||
public final int numericHintForBiometrics;
|
||||
|
||||
public final int alphaMessage;
|
||||
public final int alphaMessageForBiometrics;
|
||||
public final int numericMessage;
|
||||
public final int numericMessageForBiometrics;
|
||||
public final int buttonText;
|
||||
|
||||
public @StringRes int getHint(boolean isAlpha, int type) {
|
||||
public @StringRes int getHint(boolean isAlpha, int type, boolean isProfile) {
|
||||
if (isAlpha) {
|
||||
if (type == TYPE_FINGERPRINT) {
|
||||
return alphaHintForFingerprint;
|
||||
@@ -377,7 +362,7 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
} else if (type == TYPE_BIOMETRIC) {
|
||||
return alphaHintForBiometrics;
|
||||
} else {
|
||||
return alphaHint;
|
||||
return isProfile ? alphaHintForProfile : alphaHint;
|
||||
}
|
||||
} else {
|
||||
if (type == TYPE_FINGERPRINT) {
|
||||
@@ -387,16 +372,16 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
} else if (type == TYPE_BIOMETRIC) {
|
||||
return numericHintForBiometrics;
|
||||
} else {
|
||||
return numericHint;
|
||||
return isProfile ? numericHintForProfile : numericHint;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public @StringRes int getMessage(boolean isAlpha, int type) {
|
||||
if (isAlpha) {
|
||||
return type != TYPE_NONE ? alphaMessageForBiometrics : alphaMessage;
|
||||
return type != TYPE_NONE ? alphaMessageForBiometrics : 0;
|
||||
} else {
|
||||
return type != TYPE_NONE ? numericMessageForBiometrics : numericMessage;
|
||||
return type != TYPE_NONE ? numericMessageForBiometrics : 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -416,6 +401,7 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
}
|
||||
// Only take this argument into account if it belongs to the current profile.
|
||||
mUserId = Utils.getUserIdFromBundle(getActivity(), intent.getExtras());
|
||||
mIsManagedProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
|
||||
mForFingerprint = intent.getBooleanExtra(
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
|
||||
mForFace = intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, false);
|
||||
@@ -576,7 +562,8 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
|
||||
if (activity instanceof SettingsActivity) {
|
||||
final SettingsActivity sa = (SettingsActivity) activity;
|
||||
int title = Stage.Introduction.getHint(mIsAlphaMode, getStageType());
|
||||
int title = Stage.Introduction.getHint(mIsAlphaMode, getStageType(),
|
||||
mIsManagedProfile);
|
||||
sa.setTitle(title);
|
||||
mLayout.setHeaderText(title);
|
||||
}
|
||||
@@ -870,7 +857,8 @@ public class ChooseLockPassword extends SettingsActivity {
|
||||
} else {
|
||||
// Hide password requirement view when we are just asking user to confirm the pw.
|
||||
mPasswordRestrictionView.setVisibility(View.GONE);
|
||||
setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType())));
|
||||
setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType(),
|
||||
mIsManagedProfile)));
|
||||
setNextEnabled(canInput && length >= LockPatternUtils.MIN_LOCK_PASSWORD_SIZE);
|
||||
mSkipOrClearButton.setVisibility(toVisibility(canInput && length > 0));
|
||||
}
|
||||
|
@@ -27,6 +27,7 @@ import android.content.res.ColorStateList;
|
||||
import android.content.res.Resources.Theme;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.util.TypedValue;
|
||||
@@ -172,19 +173,6 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
// requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
super.onCreate(savedInstanceState);
|
||||
final boolean forFingerprint = getIntent()
|
||||
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
|
||||
final boolean forFace = getIntent()
|
||||
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, false);
|
||||
|
||||
int msg = R.string.lockpassword_choose_your_screen_lock_header;
|
||||
if (forFingerprint) {
|
||||
msg = R.string.lockpassword_choose_your_pattern_header_for_fingerprint;
|
||||
} else if (forFace) {
|
||||
msg = R.string.lockpassword_choose_your_pattern_header_for_face;
|
||||
}
|
||||
|
||||
setTitle(msg);
|
||||
findViewById(R.id.content_parent).setFitsSystemWindows(false);
|
||||
}
|
||||
|
||||
@@ -390,7 +378,7 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
|
||||
Introduction(
|
||||
R.string.lock_settings_picker_biometrics_added_security_message,
|
||||
R.string.lockpassword_choose_your_pattern_message,
|
||||
ID_EMPTY_MESSAGE,
|
||||
R.string.lockpattern_recording_intro_header,
|
||||
LeftButtonMode.Gone, RightButtonMode.ContinueDisabled,
|
||||
ID_EMPTY_MESSAGE, true),
|
||||
@@ -399,13 +387,13 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
LeftButtonMode.Gone, RightButtonMode.Ok, ID_EMPTY_MESSAGE, false),
|
||||
ChoiceTooShort(
|
||||
R.string.lock_settings_picker_biometrics_added_security_message,
|
||||
R.string.lockpassword_choose_your_pattern_message,
|
||||
ID_EMPTY_MESSAGE,
|
||||
R.string.lockpattern_recording_incorrect_too_short,
|
||||
LeftButtonMode.Retry, RightButtonMode.ContinueDisabled,
|
||||
ID_EMPTY_MESSAGE, true),
|
||||
FirstChoiceValid(
|
||||
R.string.lock_settings_picker_biometrics_added_security_message,
|
||||
R.string.lockpassword_choose_your_pattern_message,
|
||||
ID_EMPTY_MESSAGE,
|
||||
R.string.lockpattern_pattern_entered_header,
|
||||
LeftButtonMode.Retry, RightButtonMode.Continue, ID_EMPTY_MESSAGE, false),
|
||||
NeedToConfirm(
|
||||
@@ -464,6 +452,7 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
private LockPatternUtils mLockPatternUtils;
|
||||
private SaveAndFinishWorker mSaveAndFinishWorker;
|
||||
protected int mUserId;
|
||||
protected boolean mIsManagedProfile;
|
||||
protected boolean mForFingerprint;
|
||||
protected boolean mForFace;
|
||||
protected boolean mForBiometrics;
|
||||
@@ -481,6 +470,7 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
Intent intent = getActivity().getIntent();
|
||||
// Only take this argument into account if it belongs to the current profile.
|
||||
mUserId = Utils.getUserIdFromBundle(getActivity(), intent.getExtras());
|
||||
mIsManagedProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
|
||||
|
||||
mLockPatternUtils = new LockPatternUtils(getActivity());
|
||||
|
||||
@@ -504,6 +494,20 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, false);
|
||||
}
|
||||
|
||||
private void updateActivityTitle() {
|
||||
final int msg;
|
||||
if (mForFingerprint) {
|
||||
msg = R.string.lockpassword_choose_your_pattern_header_for_fingerprint;
|
||||
} else if (mForFace) {
|
||||
msg = R.string.lockpassword_choose_your_pattern_header_for_face;
|
||||
} else {
|
||||
msg = mIsManagedProfile
|
||||
? R.string.lockpassword_choose_your_profile_pattern_header
|
||||
: R.string.lockpassword_choose_your_pattern_header;
|
||||
}
|
||||
getActivity().setTitle(msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
@@ -515,7 +519,7 @@ public class ChooseLockPattern extends SettingsActivity {
|
||||
layout.setLandscapeHeaderAreaVisible(false /* visible */);
|
||||
break;
|
||||
}
|
||||
layout.setHeaderText(getActivity().getTitle());
|
||||
updateActivityTitle();
|
||||
if (getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) {
|
||||
View iconView = layout.findViewById(R.id.sud_layout_icon);
|
||||
if (iconView != null) {
|
||||
|
@@ -60,7 +60,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
|
||||
|
||||
// Show generic pattern title when pattern lock screen launch in Setup wizard flow before
|
||||
// fingerprint and face setup.
|
||||
setTitle(R.string.lockpassword_choose_your_screen_lock_header);
|
||||
setTitle(R.string.lockpassword_choose_your_pattern_header);
|
||||
}
|
||||
|
||||
public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment
|
||||
|
Reference in New Issue
Block a user