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) {