Hint user that fingerprint cannot unlock FBE keys
Show a hint text to user noting that pattern/PIN/password is required when decrypting the credential based storage when file based encryption is turned on. The hint text is the same as that of the device unlock screen after device reboot. Bug: 27964055 Change-Id: I0d5a493bab69eae5ce4742bd07d4851387863cac
This commit is contained in:
@@ -59,9 +59,15 @@
|
|||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:layout_marginTop="16dp"/>
|
android:layout_marginTop="16dp"/>
|
||||||
|
|
||||||
<View android:layout_width="match_parent"
|
<TextView
|
||||||
|
android:id="@+id/strongAuthRequiredText"
|
||||||
|
style="@style/TextAppearance.ConfirmDeviceCredentialsStrongAuthRequiredText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"/>
|
android:layout_weight="1"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:gravity="center"/>
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/password_entry"
|
android:id="@+id/password_entry"
|
||||||
|
@@ -59,9 +59,15 @@
|
|||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:layout_marginTop="16dp"/>
|
android:layout_marginTop="16dp"/>
|
||||||
|
|
||||||
<View android:layout_width="match_parent"
|
<TextView
|
||||||
|
android:id="@+id/strongAuthRequiredText"
|
||||||
|
style="@style/TextAppearance.ConfirmDeviceCredentialsStrongAuthRequiredText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="0.5"/>
|
android:layout_weight="0.5"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:gravity="center"/>
|
||||||
|
|
||||||
<com.android.internal.widget.LockPatternView
|
<com.android.internal.widget.LockPatternView
|
||||||
android:id="@+id/lockPattern"
|
android:id="@+id/lockPattern"
|
||||||
|
@@ -3089,6 +3089,13 @@
|
|||||||
<!-- Message to be used to explain the user that he needs to enter his work password to continue a
|
<!-- Message to be used to explain the user that he needs to enter his work password to continue a
|
||||||
particular operation. [CHAR LIMIT=70]-->
|
particular operation. [CHAR LIMIT=70]-->
|
||||||
<string name="lockpassword_confirm_your_password_generic_profile">Enter your work password to continue</string>
|
<string name="lockpassword_confirm_your_password_generic_profile">Enter your work password to continue</string>
|
||||||
|
<!-- An explanation text that the pattern needs to be solved since the device has just been restarted. [CHAR LIMIT=80] -->
|
||||||
|
<string name="lockpassword_strong_auth_required_reason_restart_pattern">Pattern required after device restarts</string>
|
||||||
|
<!-- An explanation text that the pin needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
|
||||||
|
<string name="lockpassword_strong_auth_required_reason_restart_pin">PIN required after device restarts</string>
|
||||||
|
|
||||||
|
<!-- An explanation text that the password needs to be entered since the device has just been restarted. [CHAR LIMIT=80] -->
|
||||||
|
<string name="lockpassword_strong_auth_required_reason_restart_password">Password required after device restarts</string>
|
||||||
|
|
||||||
<!-- Security & location settings screen, change security method screen instruction if user
|
<!-- Security & location settings screen, change security method screen instruction if user
|
||||||
enters incorrect PIN [CHAR LIMIT=30] -->
|
enters incorrect PIN [CHAR LIMIT=30] -->
|
||||||
|
@@ -357,6 +357,11 @@
|
|||||||
<item name="android:textColor">@color/warning</item>
|
<item name="android:textColor">@color/warning</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="TextAppearance.ConfirmDeviceCredentialsStrongAuthRequiredText"
|
||||||
|
parent="android:TextAppearance.Material.Body1">
|
||||||
|
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Small.SwitchBar">
|
<style name="TextAppearance.Small.SwitchBar">
|
||||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||||
<item name="android:textStyle">normal</item>
|
<item name="android:textStyle">normal</item>
|
||||||
|
@@ -66,6 +66,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends OptionsMenuFra
|
|||||||
PACKAGE + ".ConfirmCredentials.showWhenLocked";
|
PACKAGE + ".ConfirmCredentials.showWhenLocked";
|
||||||
|
|
||||||
private FingerprintUiHelper mFingerprintHelper;
|
private FingerprintUiHelper mFingerprintHelper;
|
||||||
|
private boolean mIsStrongAuthRequired;
|
||||||
private boolean mAllowFpAuthentication;
|
private boolean mAllowFpAuthentication;
|
||||||
protected Button mCancelButton;
|
protected Button mCancelButton;
|
||||||
protected ImageView mFingerprintIcon;
|
protected ImageView mFingerprintIcon;
|
||||||
@@ -73,6 +74,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends OptionsMenuFra
|
|||||||
protected int mUserId;
|
protected int mUserId;
|
||||||
protected LockPatternUtils mLockPatternUtils;
|
protected LockPatternUtils mLockPatternUtils;
|
||||||
protected TextView mErrorTextView;
|
protected TextView mErrorTextView;
|
||||||
|
protected TextView mStrongAuthRequiredTextView;
|
||||||
protected final Handler mHandler = new Handler();
|
protected final Handler mHandler = new Handler();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -85,7 +87,9 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends OptionsMenuFra
|
|||||||
mUserId = Utils.getUserIdFromBundle(getActivity(), intent.getExtras());
|
mUserId = Utils.getUserIdFromBundle(getActivity(), intent.getExtras());
|
||||||
final UserManager userManager = UserManager.get(getActivity());
|
final UserManager userManager = UserManager.get(getActivity());
|
||||||
mEffectiveUserId = userManager.getCredentialOwnerProfile(mUserId);
|
mEffectiveUserId = userManager.getCredentialOwnerProfile(mUserId);
|
||||||
mAllowFpAuthentication = mAllowFpAuthentication && !isFingerprintDisabledByAdmin();
|
mIsStrongAuthRequired = isStrongAuthRequired();
|
||||||
|
mAllowFpAuthentication = mAllowFpAuthentication && !isFingerprintDisabledByAdmin()
|
||||||
|
&& !mIsStrongAuthRequired;
|
||||||
mLockPatternUtils = new LockPatternUtils(getActivity());
|
mLockPatternUtils = new LockPatternUtils(getActivity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +97,11 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends OptionsMenuFra
|
|||||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
mCancelButton = (Button) view.findViewById(R.id.cancelButton);
|
mCancelButton = (Button) view.findViewById(R.id.cancelButton);
|
||||||
|
if (mStrongAuthRequiredTextView != null) {
|
||||||
|
// INIVISIBLE instead of GONE because it also acts as a weighted spacer
|
||||||
|
mStrongAuthRequiredTextView.setVisibility(
|
||||||
|
mIsStrongAuthRequired ? View.VISIBLE : View.INVISIBLE);
|
||||||
|
}
|
||||||
mFingerprintIcon = (ImageView) view.findViewById(R.id.fingerprintIcon);
|
mFingerprintIcon = (ImageView) view.findViewById(R.id.fingerprintIcon);
|
||||||
mFingerprintHelper = new FingerprintUiHelper(
|
mFingerprintHelper = new FingerprintUiHelper(
|
||||||
mFingerprintIcon,
|
mFingerprintIcon,
|
||||||
@@ -123,6 +132,10 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends OptionsMenuFra
|
|||||||
return (disabledFeatures & DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT) != 0;
|
return (disabledFeatures & DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isStrongAuthRequired() {
|
||||||
|
return !(UserManager.get(getContext()).isUserUnlocked(mEffectiveUserId));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
@@ -124,6 +124,18 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
|| DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == storedQuality
|
|| DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == storedQuality
|
||||||
|| DevicePolicyManager.PASSWORD_QUALITY_MANAGED == storedQuality;
|
|| DevicePolicyManager.PASSWORD_QUALITY_MANAGED == storedQuality;
|
||||||
|
|
||||||
|
// Strong auth is required when the user is locked.
|
||||||
|
// Currently a user does not get locked again until the device restarts. Show the
|
||||||
|
// hint text as "device has just been restarted".
|
||||||
|
mStrongAuthRequiredTextView = (TextView) view.findViewById(R.id.strongAuthRequiredText);
|
||||||
|
if (mIsAlpha) {
|
||||||
|
mStrongAuthRequiredTextView.setText(
|
||||||
|
R.string.lockpassword_strong_auth_required_reason_restart_password);
|
||||||
|
} else {
|
||||||
|
mStrongAuthRequiredTextView.setText(
|
||||||
|
R.string.lockpassword_strong_auth_required_reason_restart_pin);
|
||||||
|
}
|
||||||
|
|
||||||
mImm = (InputMethodManager) getActivity().getSystemService(
|
mImm = (InputMethodManager) getActivity().getSystemService(
|
||||||
Context.INPUT_METHOD_SERVICE);
|
Context.INPUT_METHOD_SERVICE);
|
||||||
|
|
||||||
|
@@ -118,6 +118,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
mHeaderTextView = (TextView) view.findViewById(R.id.headerText);
|
mHeaderTextView = (TextView) view.findViewById(R.id.headerText);
|
||||||
mLockPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
|
mLockPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
|
||||||
mDetailsTextView = (TextView) view.findViewById(R.id.detailsText);
|
mDetailsTextView = (TextView) view.findViewById(R.id.detailsText);
|
||||||
|
mStrongAuthRequiredTextView = (TextView) view.findViewById(R.id.strongAuthRequiredText);
|
||||||
mErrorTextView = (TextView) view.findViewById(R.id.errorText);
|
mErrorTextView = (TextView) view.findViewById(R.id.errorText);
|
||||||
mLeftSpacerLandscape = view.findViewById(R.id.leftSpacer);
|
mLeftSpacerLandscape = view.findViewById(R.id.leftSpacer);
|
||||||
mRightSpacerLandscape = view.findViewById(R.id.rightSpacer);
|
mRightSpacerLandscape = view.findViewById(R.id.rightSpacer);
|
||||||
@@ -176,6 +177,12 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
|
|||||||
FRAGMENT_TAG_CHECK_LOCK_RESULT).commit();
|
FRAGMENT_TAG_CHECK_LOCK_RESULT).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Strong auth is required when the user is locked.
|
||||||
|
// Currently a user does not get locked again until the device restarts. Show the
|
||||||
|
// hint text as "device has just been restarted".
|
||||||
|
mStrongAuthRequiredTextView.setText(
|
||||||
|
R.string.lockpassword_strong_auth_required_reason_restart_pattern);
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user