diff --git a/res/values/strings.xml b/res/values/strings.xml index 4bc4129b1eb..0343a15696c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -695,11 +695,11 @@ Manage fingerprints - Use fingerprint for - - Add fingerprint - - screen lock + Use fingerprint for + + Add fingerprint + + screen lock %1$d fingerprint set up @@ -772,6 +772,9 @@ Lift finger, then touch sensor again + + You can add up to %d fingerprints + Encryption diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java index b87e02925da..d45f3c2fe9a 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java @@ -16,10 +16,18 @@ package com.android.settings.fingerprint; +import android.content.Context; +import android.hardware.fingerprint.Fingerprint; +import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; +import android.preference.Preference; import android.view.View; +import android.widget.Button; import com.android.settings.R; +import com.android.settings.fingerprint.FingerprintSettings.FingerprintPreference; + +import java.util.List; /** * Activity which concludes fingerprint enrollment. @@ -31,7 +39,18 @@ public class FingerprintEnrollFinish extends FingerprintEnrollBase { super.onCreate(savedInstanceState); setContentView(R.layout.fingerprint_enroll_finish); setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title); - findViewById(R.id.add_another_button).setOnClickListener(this); + Button addButton = (Button) findViewById(R.id.add_another_button); + + FingerprintManager fpm = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE); + int enrolled = fpm.getEnrolledFingerprints().size(); + int max = getResources().getInteger( + com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); + if (enrolled >= max) { + /* Don't show "Add" button if too many fingerprints already added */ + addButton.setVisibility(View.INVISIBLE); + } else { + addButton.setOnClickListener(this); + } } @Override diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java index 5cbab66bbdd..fce46fa6477 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -179,6 +179,7 @@ public class FingerprintSettings extends SubSettings { switch (msg.what) { case MSG_REFRESH_FINGERPRINT_TEMPLATES: removeFingerprintPreference(msg.arg1); + updateAddPreference(); break; case MSG_FINGER_AUTH_SUCCESS: mFingerprintCancel = null; @@ -330,6 +331,19 @@ public class FingerprintSettings extends SubSettings { addPreference.setIcon(R.drawable.ic_add_24dp); root.addPreference(addPreference); addPreference.setOnPreferenceChangeListener(this); + updateAddPreference(); + } + + private void updateAddPreference() { + /* Disable preference if too many fingerprints added */ + final int max = getContext().getResources().getInteger( + com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); + boolean tooMany = mFingerprintManager.getEnrolledFingerprints().size() >= max; + CharSequence maxSummary = tooMany ? + getContext().getString(R.string.fingerprint_add_max, max) : ""; + Preference addPreference = findPreference(KEY_FINGERPRINT_ADD); + addPreference.setSummary(maxSummary); + addPreference.setEnabled(!tooMany); } private static String genKey(int id) {