diff --git a/res/values/strings.xml b/res/values/strings.xml
index 53db30e93ad..9501c578ec3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1293,11 +1293,9 @@
In addition to unlocking your phone, you can also use your fingerprint to authorize purchases and app access. Learn more
-
- The screen lock option is disabled. To learn more, contact your organization\'s admin.
- More details\n\nYou can still use your
- fingerprint to authorize purchases and app access.
- Learn more
+ The screen lock option is disabled. To learn more, contact your organization\u2019s admin.
+
+ You can still use your fingerprint to authorize purchases and app access.
Lift finger, then touch sensor again
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index 408f8596aac..e42574f7b6b 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -65,7 +65,6 @@ import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper;
-import com.android.settings.utils.AnnotationSpan;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -73,6 +72,7 @@ import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.TwoTargetPreference;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -114,6 +114,13 @@ public class FingerprintSettings extends SubSettings {
public static class FingerprintSettingsFragment extends SettingsPreferenceFragment
implements OnPreferenceChangeListener, FingerprintPreference.OnDeleteClickListener {
+
+ private static class FooterColumn {
+ CharSequence mTitle = null;
+ CharSequence mLearnMoreOverrideText = null;
+ View.OnClickListener mLearnMoreClickListener = null;
+ }
+
private static final int RESET_HIGHLIGHT_DELAY_MS = 500;
private static final String TAG = "FingerprintSettings";
@@ -144,8 +151,7 @@ public class FingerprintSettings extends SubSettings {
private boolean mLaunchedConfirm;
private Drawable mHighlightDrawable;
private int mUserId;
- private CharSequence mFooterTitle;
- private View.OnClickListener mLearnMoreListener = null;
+ private final List mFooterColumns = new ArrayList<>();
private boolean mEnrollClicked;
private long mChallenge;
@@ -352,32 +358,45 @@ public class FingerprintSettings extends SubSettings {
mLaunchedConfirm = true;
launchChooseOrConfirmLock();
}
+ updateFooterColumns(activity);
+ }
+ private void updateFooterColumns(@NonNull Activity activity) {
final EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfKeyguardFeaturesDisabled(
activity, DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT, mUserId);
- final AnnotationSpan.LinkInfo adminLinkInfo = new AnnotationSpan.LinkInfo(
- ANNOTATION_ADMIN_DETAILS, (view) -> {
- RestrictedLockUtils.sendShowAdminSupportDetailsIntent(activity, admin);
- });
final Intent helpIntent = HelpUtils.getHelpIntent(
activity, getString(getHelpResource()), activity.getClass().getName());
- final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo(
- activity, ANNOTATION_URL, helpIntent);
+ final View.OnClickListener learnMoreClickListener = (v) ->
+ activity.startActivityForResult(helpIntent, 0);
+ mFooterColumns.clear();
if (admin != null) {
- DevicePolicyManager devicePolicyManager =
+ final DevicePolicyManager devicePolicyManager =
getSystemService(DevicePolicyManager.class);
- String footerText = devicePolicyManager.getResources().getString(
+ final FooterColumn column1 = new FooterColumn();
+ column1.mTitle = devicePolicyManager.getResources().getString(
FINGERPRINT_UNLOCK_DISABLED_EXPLANATION,
- () -> getString(R.string.security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled));
+ () -> getString(
+ R.string.security_fingerprint_disclaimer_lockscreen_disabled_1
+ )
+ );
+ column1.mLearnMoreClickListener = (v) -> RestrictedLockUtils
+ .sendShowAdminSupportDetailsIntent(activity, admin);
+ column1.mLearnMoreOverrideText = getText(R.string.admin_support_more_info);
+ mFooterColumns.add(column1);
- mFooterTitle = AnnotationSpan.linkify(footerText, linkInfo, adminLinkInfo);
+ final FooterColumn column2 = new FooterColumn();
+ column2.mTitle = getText(
+ R.string.security_fingerprint_disclaimer_lockscreen_disabled_2
+ );
+ column2.mLearnMoreClickListener = learnMoreClickListener;
+ mFooterColumns.add(column2);
} else {
- mFooterTitle = getText(R.string.security_settings_fingerprint_v2_home_screen_text);
- mLearnMoreListener = (v) -> activity.startActivityForResult(helpIntent, 0);
+ final FooterColumn column = new FooterColumn();
+ column.mTitle = getText(R.string.security_settings_fingerprint_v2_home_screen_text);
+ column.mLearnMoreClickListener = learnMoreClickListener;
+ mFooterColumns.add(column);
}
-
-
}
private boolean isUdfps() {
@@ -474,12 +493,21 @@ public class FingerprintSettings extends SubSettings {
if (context == null) {
return;
}
- final FooterPreference footer = new FooterPreference.Builder(context)
- .setTitle(mFooterTitle).build();
- if (mLearnMoreListener != null) {
- footer.setLearnMoreAction(mLearnMoreListener);
+ for (int i = 0; i < mFooterColumns.size(); ++i) {
+ final FooterColumn column = mFooterColumns.get(i);
+ final FooterPreference footer = new FooterPreference.Builder(context)
+ .setTitle(column.mTitle).build();
+ if (i > 0) {
+ footer.setIconVisibility(View.GONE);
+ }
+ if (column.mLearnMoreClickListener != null) {
+ footer.setLearnMoreAction(column.mLearnMoreClickListener);
+ if (!TextUtils.isEmpty(column.mLearnMoreOverrideText)) {
+ footer.setLearnMoreText(column.mLearnMoreOverrideText);
+ }
+ }
+ root.addPreference(footer);
}
- root.addPreference(footer);
}
private static String genKey(int id) {