Merge "Do not use canAuthenticate() to check if user can reset lockout" into qt-r1-dev

This commit is contained in:
Kevin Chyn
2019-07-27 00:33:33 +00:00
committed by Android (Google) Code Review
4 changed files with 40 additions and 1 deletions

View File

@@ -128,6 +128,25 @@ public class BiometricManager {
}
}
/**
* @hide
* @param userId
* @return
*/
@RequiresPermission(USE_BIOMETRIC_INTERNAL)
public boolean hasEnrolledBiometrics(int userId) {
if (mService != null) {
try {
return mService.hasEnrolledBiometrics(userId);
} catch (RemoteException e) {
Slog.w(TAG, "Remote exception in hasEnrolledBiometrics(): " + e);
return false;
}
} else {
return false;
}
}
/**
* Listens for changes to biometric eligibility on keyguard from user settings.
* @param callback

View File

@@ -42,6 +42,9 @@ interface IBiometricService {
// Checks if biometrics can be used.
int canAuthenticate(String opPackageName, int userId);
// Checks if any biometrics are enrolled.
boolean hasEnrolledBiometrics(int userId);
// Register callback for when keyguard biometric eligibility changes.
void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback);

View File

@@ -789,6 +789,23 @@ public class BiometricService extends SystemService {
return error;
}
@Override
public boolean hasEnrolledBiometrics(int userId) {
checkInternalPermission();
final long ident = Binder.clearCallingIdentity();
try {
for (int i = 0; i < mAuthenticators.size(); i++) {
if (mAuthenticators.get(i).mAuthenticator.hasEnrolledTemplates(userId)) {
return true;
}
}
} finally {
Binder.restoreCallingIdentity(ident);
}
return false;
}
@Override // Binder call
public void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback)
throws RemoteException {

View File

@@ -446,7 +446,7 @@ public class LockSettingsService extends ILockSettings.Stub {
public boolean hasEnrolledBiometrics(int userId) {
BiometricManager bm = mContext.getSystemService(BiometricManager.class);
return bm.canAuthenticate(userId) == BiometricManager.BIOMETRIC_SUCCESS;
return bm.hasEnrolledBiometrics(userId);
}
public int binderGetCallingUid() {