diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index f6f44a8..bfdcd5b 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -241,7 +241,7 @@
         final boolean maxFacesEnrolled = faceManager.getEnrolledFaces(mUserId).size()
                 >= faceProperties.get(0).maxTemplatesAllowed;
         final boolean maxFingerprintsEnrolled = fingerprintManager.getEnrolledFingerprints(mUserId)
-                .size() >= fpProperties.get(0).maxTemplatesAllowed;
+                .size() >= fpProperties.get(0).maxEnrollmentsPerUser;
 
         if (maxFacesEnrolled) {
             mCheckboxFace.setEnabled(false);
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index dbbcef1..61c837a 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -129,7 +129,7 @@
             final List<FingerprintSensorProperties> props =
                     mFingerprintManager.getSensorProperties();
             // This will need to be updated for devices with multiple fingerprint sensors
-            final int max = props.get(0).maxTemplatesAllowed;
+            final int max = props.get(0).maxEnrollmentsPerUser;
             final int numEnrolledFingerprints =
                     mFingerprintManager.getEnrolledFingerprints(mUserId).size();
             if (numEnrolledFingerprints >= max) {
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
index 7427b5a..794560c 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
@@ -23,6 +23,7 @@
 import android.app.KeyguardManager;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.hardware.biometrics.SensorProperties;
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.FingerprintSensorProperties;
 import android.view.View;
@@ -74,9 +75,10 @@
             .setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true);
 
         final FingerprintSensorProperties prop = new FingerprintSensorProperties(0 /* sensorId */,
+                SensorProperties.STRENGTH_STRONG,
+                5 /* maxEnrollmentsPerUser */,
                 FingerprintSensorProperties.TYPE_REAR,
-                true /* resetLockoutRequiresHardwareAuthToken */,
-                5 /* maxTemplatesAllowed */);
+                true /* resetLockoutRequiresHardwareAuthToken */);
         final ArrayList<FingerprintSensorProperties> props = new ArrayList<>();
         props.add(prop);
         ShadowFingerprintManager.setSensorProperties(props);
