import android.app.admin.DevicePolicyManager;
import android.content.Intent;
import android.content.IntentSender;
+import android.os.UserManager;
import com.android.internal.widget.LockPatternUtils;
private boolean launchConfirmationActivity(int request, @Nullable CharSequence title,
@Nullable CharSequence header, @Nullable CharSequence description,
boolean returnCredentials, boolean external, boolean hasChallenge,
- long challenge, int effectiveUserId) {
+ long challenge, int userId) {
+ final int effectiveUserId = UserManager.get(mActivity).getCredentialOwnerProfile(userId);
boolean launched = false;
switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(effectiveUserId)) {
returnCredentials || hasChallenge
? ConfirmLockPattern.InternalActivity.class
: ConfirmLockPattern.class, external,
- hasChallenge, challenge, effectiveUserId);
+ hasChallenge, challenge, userId);
break;
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
returnCredentials || hasChallenge
? ConfirmLockPassword.InternalActivity.class
: ConfirmLockPassword.class, external,
- hasChallenge, challenge, effectiveUserId);
+ hasChallenge, challenge, userId);
break;
}
return launched;
protected Button mCancelButton;
protected ImageView mFingerprintIcon;
protected int mEffectiveUserId;
+ protected int mUserId;
protected LockPatternUtils mLockPatternUtils;
protected TextView mErrorTextView;
protected final Handler mHandler = new Handler();
ALLOW_FP_AUTHENTICATION, false);
// Only take this argument into account if it belongs to the current profile.
Intent intent = getActivity().getIntent();
- mEffectiveUserId = Utils.getUserIdFromBundle(getActivity(), intent.getExtras());
+ mUserId = Utils.getUserIdFromBundle(getActivity(), intent.getExtras());
+ final UserManager userManager = UserManager.get(getActivity());
+ mEffectiveUserId = userManager.getCredentialOwnerProfile(mUserId);
mAllowFpAuthentication = mAllowFpAuthentication && !isFingerprintDisabledByAdmin();
mLockPatternUtils = new LockPatternUtils(getActivity());
}
long challenge = getActivity().getIntent().getLongExtra(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
final int localEffectiveUserId = mEffectiveUserId;
- mPendingLockCheck = LockPatternChecker.verifyPassword(
- mLockPatternUtils,
- pin,
- challenge,
- localEffectiveUserId,
+ final int localUserId = mUserId;
+ final LockPatternChecker.OnVerifyCallback onVerifyCallback =
new LockPatternChecker.OnVerifyCallback() {
@Override
public void onVerified(byte[] token, int timeoutMs) {
token);
}
mCredentialCheckResultTracker.setResult(matched, intent, timeoutMs,
- localEffectiveUserId);
+ localUserId);
}
- });
+ };
+ mPendingLockCheck = (localEffectiveUserId == localUserId)
+ ? LockPatternChecker.verifyPassword(
+ mLockPatternUtils, pin, challenge, localUserId, onVerifyCallback)
+ : LockPatternChecker.verifyTiedProfileChallenge(
+ mLockPatternUtils, pin, false, challenge, localUserId,
+ onVerifyCallback);
}
private void startCheckPassword(final String pin, final Intent intent) {
private void startVerifyPattern(final List<LockPatternView.Cell> pattern,
final Intent intent) {
final int localEffectiveUserId = mEffectiveUserId;
+ final int localUserId = mUserId;
long challenge = getActivity().getIntent().getLongExtra(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0);
- mPendingLockCheck = LockPatternChecker.verifyPattern(
- mLockPatternUtils,
- pattern,
- challenge,
- localEffectiveUserId,
- new LockPatternChecker.OnVerifyCallback() {
- @Override
- public void onVerified(byte[] token, int timeoutMs) {
- mPendingLockCheck = null;
- boolean matched = false;
- if (token != null) {
- matched = true;
- intent.putExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
- token);
- }
- mCredentialCheckResultTracker.setResult(matched, intent, timeoutMs,
- localEffectiveUserId);
+ final LockPatternChecker.OnVerifyCallback onVerifyCallback =
+ new LockPatternChecker.OnVerifyCallback() {
+ @Override
+ public void onVerified(byte[] token, int timeoutMs) {
+ mPendingLockCheck = null;
+ boolean matched = false;
+ if (token != null) {
+ matched = true;
+ intent.putExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
+ token);
}
- });
+ mCredentialCheckResultTracker.setResult(matched, intent, timeoutMs,
+ localEffectiveUserId);
+ }
+ };
+ mPendingLockCheck = (localEffectiveUserId == localUserId)
+ ? LockPatternChecker.verifyPattern(
+ mLockPatternUtils, pattern, challenge, localUserId,
+ onVerifyCallback)
+ : LockPatternChecker.verifyTiedProfileChallenge(
+ mLockPatternUtils, LockPatternUtils.patternToString(pattern),
+ true, challenge, localUserId, onVerifyCallback);
}
private void startCheckPattern(final List<LockPatternView.Cell> pattern,
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.os.UserHandle;
+import android.os.UserManager;
import android.text.Annotation;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
protected static final int FINGERPRINT_FIND_SENSOR_REQUEST = 2;
protected static final int LEARN_MORE_REQUEST = 3;
+ private UserManager mUserManager;
private boolean mHasPassword;
@Override
setHeaderText(R.string.security_settings_fingerprint_enroll_introduction_title);
final SetupWizardRecyclerLayout layout =
(SetupWizardRecyclerLayout) findViewById(R.id.setup_wizard_layout);
+ mUserManager = UserManager.get(this);
final RecyclerItemAdapter adapter = (RecyclerItemAdapter) layout.getAdapter();
adapter.setOnItemSelectedListener(this);
Item item = (Item) adapter.findItemById(R.id.fingerprint_introduction_message);
private void updatePasswordQuality() {
final int passwordQuality = new ChooseLockSettingsHelper(this).utils()
- .getActivePasswordQuality(mUserId);
+ .getActivePasswordQuality(mUserManager.getCredentialOwnerProfile(mUserId));
mHasPassword = passwordQuality != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
}