35
35
import android .hardware .biometrics .BiometricManager ;
36
36
import android .hardware .biometrics .BiometricManager .Authenticators ;
37
37
import android .hardware .biometrics .BiometricManager .BiometricError ;
38
+ import android .hardware .biometrics .SensorProperties ;
38
39
import android .hardware .face .FaceManager ;
39
40
import android .hardware .face .FaceSensorPropertiesInternal ;
40
41
import android .hardware .fingerprint .FingerprintManager ;
@@ -198,7 +199,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
198
199
// Default behavior is to enroll BIOMETRIC_WEAK or above. See ACTION_BIOMETRIC_ENROLL.
199
200
final int authenticators = getIntent ().getIntExtra (
200
201
EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED , Authenticators .BIOMETRIC_WEAK );
201
- Log .d (TAG , "Authenticators: " + authenticators );
202
+ Log .d (TAG , "Authenticators: " + BiometricManager . authenticatorToStr ( authenticators ) );
202
203
203
204
mParentalOptionsRequired = intent .getBooleanExtra (EXTRA_REQUIRE_PARENTAL_CONSENT , false );
204
205
mSkipReturnToParent = intent .getBooleanExtra (EXTRA_SKIP_RETURN_TO_PARENT , false );
@@ -222,9 +223,16 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
222
223
final FaceSensorPropertiesInternal props = faceProperties .get (0 );
223
224
final int maxEnrolls =
224
225
isSetupWizard ? maxFacesEnrollableIfSUW : props .maxEnrollmentsPerUser ;
226
+ final boolean isFaceStrong =
227
+ props .sensorStrength == SensorProperties .STRENGTH_STRONG ;
225
228
mIsFaceEnrollable =
226
229
faceManager .getEnrolledFaces (mUserId ).size () < maxEnrolls ;
227
230
231
+ // If we expect strong bio only, check if face is strong
232
+ if (authenticators == Authenticators .BIOMETRIC_STRONG && !isFaceStrong ) {
233
+ mIsFaceEnrollable = false ;
234
+ }
235
+
228
236
final boolean parentalConsent = isSetupWizard || (mParentalOptionsRequired
229
237
&& !WizardManagerHelper .isUserSetupComplete (this ));
230
238
if (parentalConsent && isMultiSensor && mIsFaceEnrollable ) {
@@ -278,6 +286,9 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
278
286
279
287
private void updateFingerprintEnrollable (boolean isSetupWizard ) {
280
288
if (mHasFeatureFingerprint ) {
289
+ final int authenticators = getIntent ().getIntExtra (
290
+ EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED , Authenticators .BIOMETRIC_WEAK );
291
+
281
292
final FingerprintManager fpManager = getSystemService (FingerprintManager .class );
282
293
final List <FingerprintSensorPropertiesInternal > fpProperties =
283
294
fpManager .getSensorPropertiesInternal ();
@@ -287,8 +298,15 @@ private void updateFingerprintEnrollable(boolean isSetupWizard) {
287
298
final int maxEnrolls =
288
299
isSetupWizard ? maxFingerprintsEnrollableIfSUW
289
300
: fpProperties .get (0 ).maxEnrollmentsPerUser ;
301
+ final boolean isFingerprintStrong =
302
+ fpProperties .get (0 ).sensorStrength == SensorProperties .STRENGTH_STRONG ;
290
303
mIsFingerprintEnrollable =
291
304
fpManager .getEnrolledFingerprints (mUserId ).size () < maxEnrolls ;
305
+
306
+ // If we expect strong bio only, check if fingerprint is strong
307
+ if (authenticators == Authenticators .BIOMETRIC_STRONG && !isFingerprintStrong ) {
308
+ mIsFingerprintEnrollable = false ;
309
+ }
292
310
}
293
311
}
294
312
}
@@ -308,8 +326,8 @@ private void startEnrollWith(@Authenticators.Types int authenticators, boolean s
308
326
}
309
327
}
310
328
311
- boolean canUseFace = mHasFeatureFace ;
312
- boolean canUseFingerprint = mHasFeatureFingerprint ;
329
+ boolean canUseFace = mIsFaceEnrollable ;
330
+ boolean canUseFingerprint = mIsFingerprintEnrollable ;
313
331
if (mParentalOptionsRequired ) {
314
332
if (mParentalOptions == null ) {
315
333
throw new IllegalStateException ("consent options required, but not set" );
@@ -612,11 +630,11 @@ private void launchChooseLock() {
612
630
Intent intent = BiometricUtils .getChooseLockIntent (this , getIntent ());
613
631
intent .putExtra (ChooseLockGeneric .ChooseLockGenericFragment .HIDE_INSECURE_OPTIONS , true );
614
632
intent .putExtra (ChooseLockSettingsHelper .EXTRA_KEY_REQUEST_GK_PW_HANDLE , true );
615
- if (mHasFeatureFingerprint && mHasFeatureFace ) {
633
+ if (mIsFingerprintEnrollable && mIsFaceEnrollable ) {
616
634
intent .putExtra (ChooseLockSettingsHelper .EXTRA_KEY_FOR_BIOMETRICS , true );
617
- } else if (mHasFeatureFace ) {
635
+ } else if (mIsFaceEnrollable ) {
618
636
intent .putExtra (ChooseLockSettingsHelper .EXTRA_KEY_FOR_FACE , true );
619
- } else if (mHasFeatureFingerprint ) {
637
+ } else if (mIsFingerprintEnrollable ) {
620
638
intent .putExtra (ChooseLockSettingsHelper .EXTRA_KEY_FOR_FINGERPRINT , true );
621
639
}
622
640
0 commit comments