Merge "Do not clear calling identify when using BiometricPrompt from FingerprintService."
This commit is contained in:
@@ -421,6 +421,18 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if BiometricPrompt is being used by the legacy fingerprint manager API.
|
||||
* @param sensorId sensor id
|
||||
* @return This builder.
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setIsForLegacyFingerprintManager(int sensorId) {
|
||||
mPromptInfo.setIsForLegacyFingerprintManager(sensorId);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link BiometricPrompt}.
|
||||
*
|
||||
@@ -883,28 +895,36 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull AuthenticationCallback callback,
|
||||
int userId) {
|
||||
authenticateUserForOperation(cancel, executor, callback, userId, 0 /* operationId */);
|
||||
if (cancel == null) {
|
||||
throw new IllegalArgumentException("Must supply a cancellation signal");
|
||||
}
|
||||
if (executor == null) {
|
||||
throw new IllegalArgumentException("Must supply an executor");
|
||||
}
|
||||
if (callback == null) {
|
||||
throw new IllegalArgumentException("Must supply a callback");
|
||||
}
|
||||
|
||||
authenticateInternal(0 /* operationId */, cancel, executor, callback, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Authenticates for the given user and keystore operation.
|
||||
* Authenticates for the given keystore operation.
|
||||
*
|
||||
* @param cancel An object that can be used to cancel authentication
|
||||
* @param executor An executor to handle callback events
|
||||
* @param callback An object to receive authentication events
|
||||
* @param userId The user to authenticate
|
||||
* @param operationId The keystore operation associated with authentication
|
||||
*
|
||||
* @return A requestId that can be used to cancel this operation.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(USE_BIOMETRIC_INTERNAL)
|
||||
public long authenticateUserForOperation(
|
||||
@RequiresPermission(USE_BIOMETRIC)
|
||||
public long authenticateForOperation(
|
||||
@NonNull CancellationSignal cancel,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
@NonNull AuthenticationCallback callback,
|
||||
int userId,
|
||||
long operationId) {
|
||||
if (cancel == null) {
|
||||
throw new IllegalArgumentException("Must supply a cancellation signal");
|
||||
@@ -916,7 +936,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
|
||||
throw new IllegalArgumentException("Must supply a callback");
|
||||
}
|
||||
|
||||
return authenticateInternal(operationId, cancel, executor, callback, userId);
|
||||
return authenticateInternal(operationId, cancel, executor, callback, mContext.getUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1050,7 +1070,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
|
||||
private void cancelAuthentication(long requestId) {
|
||||
if (mService != null) {
|
||||
try {
|
||||
mService.cancelAuthentication(mToken, mContext.getOpPackageName(), requestId);
|
||||
mService.cancelAuthentication(mToken, mContext.getPackageName(), requestId);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Unable to cancel authentication", e);
|
||||
}
|
||||
@@ -1109,7 +1129,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
|
||||
}
|
||||
|
||||
final long authId = mService.authenticate(mToken, operationId, userId,
|
||||
mBiometricServiceReceiver, mContext.getOpPackageName(), promptInfo);
|
||||
mBiometricServiceReceiver, mContext.getPackageName(), promptInfo);
|
||||
cancel.setOnCancelListener(new OnAuthenticationCancelListener(authId));
|
||||
return authId;
|
||||
} catch (RemoteException e) {
|
||||
|
||||
@@ -19,7 +19,7 @@ package android.hardware.biometrics;
|
||||
* ITestSession callback for FingerprintManager and BiometricManager.
|
||||
* @hide
|
||||
*/
|
||||
interface ITestSessionCallback {
|
||||
oneway interface ITestSessionCallback {
|
||||
void onCleanupStarted(int userId);
|
||||
void onCleanupFinished(int userId);
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ public class PromptInfo implements Parcelable {
|
||||
@NonNull private List<Integer> mAllowedSensorIds = new ArrayList<>();
|
||||
private boolean mAllowBackgroundAuthentication;
|
||||
private boolean mIgnoreEnrollmentState;
|
||||
private boolean mIsForLegacyFingerprintManager = false;
|
||||
|
||||
public PromptInfo() {
|
||||
|
||||
@@ -68,6 +69,7 @@ public class PromptInfo implements Parcelable {
|
||||
mAllowedSensorIds = in.readArrayList(Integer.class.getClassLoader(), java.lang.Integer.class);
|
||||
mAllowBackgroundAuthentication = in.readBoolean();
|
||||
mIgnoreEnrollmentState = in.readBoolean();
|
||||
mIsForLegacyFingerprintManager = in.readBoolean();
|
||||
}
|
||||
|
||||
public static final Creator<PromptInfo> CREATOR = new Creator<PromptInfo>() {
|
||||
@@ -105,10 +107,15 @@ public class PromptInfo implements Parcelable {
|
||||
dest.writeList(mAllowedSensorIds);
|
||||
dest.writeBoolean(mAllowBackgroundAuthentication);
|
||||
dest.writeBoolean(mIgnoreEnrollmentState);
|
||||
dest.writeBoolean(mIsForLegacyFingerprintManager);
|
||||
}
|
||||
|
||||
public boolean containsTestConfigurations() {
|
||||
if (!mAllowedSensorIds.isEmpty()) {
|
||||
if (mIsForLegacyFingerprintManager
|
||||
&& mAllowedSensorIds.size() == 1
|
||||
&& !mAllowBackgroundAuthentication) {
|
||||
return false;
|
||||
} else if (!mAllowedSensorIds.isEmpty()) {
|
||||
return true;
|
||||
} else if (mAllowBackgroundAuthentication) {
|
||||
return true;
|
||||
@@ -188,7 +195,8 @@ public class PromptInfo implements Parcelable {
|
||||
}
|
||||
|
||||
public void setAllowedSensorIds(@NonNull List<Integer> sensorIds) {
|
||||
mAllowedSensorIds = sensorIds;
|
||||
mAllowedSensorIds.clear();
|
||||
mAllowedSensorIds.addAll(sensorIds);
|
||||
}
|
||||
|
||||
public void setAllowBackgroundAuthentication(boolean allow) {
|
||||
@@ -199,6 +207,12 @@ public class PromptInfo implements Parcelable {
|
||||
mIgnoreEnrollmentState = ignoreEnrollmentState;
|
||||
}
|
||||
|
||||
public void setIsForLegacyFingerprintManager(int sensorId) {
|
||||
mIsForLegacyFingerprintManager = true;
|
||||
mAllowedSensorIds.clear();
|
||||
mAllowedSensorIds.add(sensorId);
|
||||
}
|
||||
|
||||
// Getters
|
||||
|
||||
public CharSequence getTitle() {
|
||||
@@ -272,4 +286,8 @@ public class PromptInfo implements Parcelable {
|
||||
public boolean isIgnoreEnrollmentState() {
|
||||
return mIgnoreEnrollmentState;
|
||||
}
|
||||
|
||||
public boolean isForLegacyFingerprintManager() {
|
||||
return mIsForLegacyFingerprintManager;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user