Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb387535 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix More details not work on fingerprint" into tm-dev

parents f1167898 13c91159
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -1291,11 +1291,9 @@
    <!-- Text shown in fingerprint settings explaining what the fingerprint can be used for. [CHAR LIMIT=NONE] -->
    <string name="security_settings_fingerprint_enroll_disclaimer">In addition to unlocking your phone, you can also use your fingerprint to authorize purchases and app access. <annotation id="url">Learn more</annotation></string>
    <!-- Text shown in fingerprint settings explaining what the fingerprint can be used for in the case unlocking is disabled [CHAR LIMIT=NONE] -->
    <string name="security_settings_fingerprint_enroll_disclaimer_lockscreen_disabled">
        The screen lock option is disabled. To learn more, contact your organization\'s admin.
        <annotation id="admin_details">More details</annotation>\n\nYou can still use your
        fingerprint to authorize purchases and app access.
        <annotation id="url">Learn more</annotation></string>
    <string name="security_fingerprint_disclaimer_lockscreen_disabled_1">The screen lock option is disabled. To learn more, contact your organization\u2019s admin.</string>
    <!-- Text shown in fingerprint settings explaining what the fingerprint can be used for in the case unlocking is disabled [CHAR LIMIT=NONE] -->
    <string name="security_fingerprint_disclaimer_lockscreen_disabled_2">You can still use your fingerprint to authorize purchases and app access.</string>
    <!-- Text shown in fingerprint enroll when we didn't observe progress for a few seconds. [CHAR LIMIT=100] -->
    <string name="security_settings_fingerprint_enroll_lift_touch_again">Lift finger, then touch sensor again</string>
    <!-- Text shown during fingerprint enrollment to indicate bad sensor calibration. [CHAR LIMIT=100] -->
+51 −23
Original line number Diff line number Diff line
@@ -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<FooterColumn> 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));

                mFooterTitle = AnnotationSpan.linkify(footerText, linkInfo, adminLinkInfo);
                        () -> 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);

                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,13 +493,22 @@ public class FingerprintSettings extends SubSettings {
            if (context == null) {
                return;
            }
            for (int i = 0; i < mFooterColumns.size(); ++i) {
                final FooterColumn column = mFooterColumns.get(i);
                final FooterPreference footer = new FooterPreference.Builder(context)
                    .setTitle(mFooterTitle).build();
            if (mLearnMoreListener != null) {
                footer.setLearnMoreAction(mLearnMoreListener);
                        .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);
            }
        }

        private static String genKey(int id) {
            return KEY_FINGERPRINT_ITEM_PREFIX + "_" + id;