Loading Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ java_library { ":libcamera_client_framework_aidl", "core/java/android/hardware/IConsumerIrService.aidl", "core/java/android/hardware/ISerialManager.aidl", "core/java/android/hardware/biometrics/IBiometricDialogReceiver.aidl", "core/java/android/hardware/biometrics/IBiometricPromptReceiver.aidl", "core/java/android/hardware/display/IDisplayManager.aidl", "core/java/android/hardware/display/IDisplayManagerCallback.aidl", "core/java/android/hardware/display/IVirtualDisplayCallback.aidl", Loading api/current.txt +19 −19 Original line number Diff line number Diff line Loading @@ -15758,9 +15758,9 @@ package android.hardware { package android.hardware.biometrics { public class BiometricDialog { method public void authenticate(android.hardware.biometrics.BiometricDialog.CryptoObject, android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricDialog.AuthenticationCallback); method public void authenticate(android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricDialog.AuthenticationCallback); public class BiometricPrompt { method public void authenticate(android.hardware.biometrics.BiometricPrompt.CryptoObject, android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricPrompt.AuthenticationCallback); method public void authenticate(android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricPrompt.AuthenticationCallback); field public static final int BIOMETRIC_ACQUIRED_GOOD = 0; // 0x0 field public static final int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 3; // 0x3 field public static final int BIOMETRIC_ACQUIRED_INSUFFICIENT = 2; // 0x2 Loading @@ -15780,31 +15780,31 @@ package android.hardware.biometrics { field public static final int BIOMETRIC_ERROR_VENDOR = 8; // 0x8 } public static abstract class BiometricDialog.AuthenticationCallback { ctor public BiometricDialog.AuthenticationCallback(); public static abstract class BiometricPrompt.AuthenticationCallback { ctor public BiometricPrompt.AuthenticationCallback(); method public void onAuthenticationError(int, java.lang.CharSequence); method public void onAuthenticationFailed(); method public void onAuthenticationHelp(int, java.lang.CharSequence); method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricDialog.AuthenticationResult); method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult); } public static class BiometricDialog.AuthenticationResult { method public android.hardware.biometrics.BiometricDialog.CryptoObject getCryptoObject(); public static class BiometricPrompt.AuthenticationResult { method public android.hardware.biometrics.BiometricPrompt.CryptoObject getCryptoObject(); } public static class BiometricDialog.Builder { ctor public BiometricDialog.Builder(android.content.Context); method public android.hardware.biometrics.BiometricDialog build(); method public android.hardware.biometrics.BiometricDialog.Builder setDescription(java.lang.CharSequence); method public android.hardware.biometrics.BiometricDialog.Builder setNegativeButton(java.lang.CharSequence, java.util.concurrent.Executor, android.content.DialogInterface.OnClickListener); method public android.hardware.biometrics.BiometricDialog.Builder setSubtitle(java.lang.CharSequence); method public android.hardware.biometrics.BiometricDialog.Builder setTitle(java.lang.CharSequence); public static class BiometricPrompt.Builder { ctor public BiometricPrompt.Builder(android.content.Context); method public android.hardware.biometrics.BiometricPrompt build(); method public android.hardware.biometrics.BiometricPrompt.Builder setDescription(java.lang.CharSequence); method public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(java.lang.CharSequence, java.util.concurrent.Executor, android.content.DialogInterface.OnClickListener); method public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(java.lang.CharSequence); method public android.hardware.biometrics.BiometricPrompt.Builder setTitle(java.lang.CharSequence); } public static final class BiometricDialog.CryptoObject { ctor public BiometricDialog.CryptoObject(java.security.Signature); ctor public BiometricDialog.CryptoObject(javax.crypto.Cipher); ctor public BiometricDialog.CryptoObject(javax.crypto.Mac); public static final class BiometricPrompt.CryptoObject { ctor public BiometricPrompt.CryptoObject(java.security.Signature); ctor public BiometricPrompt.CryptoObject(javax.crypto.Cipher); ctor public BiometricPrompt.CryptoObject(javax.crypto.Mac); method public javax.crypto.Cipher getCipher(); method public javax.crypto.Mac getMac(); method public java.security.Signature getSignature(); core/java/android/hardware/biometrics/BiometricDialog.java→core/java/android/hardware/biometrics/BiometricPrompt.java +19 −19 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ import javax.crypto.Mac; /** * A class that manages a system-provided biometric dialog. */ public class BiometricDialog implements BiometricAuthenticator, BiometricConstants { public class BiometricPrompt implements BiometricAuthenticator, BiometricConstants { /** * @hide Loading Loading @@ -190,11 +190,11 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } /** * Creates a {@link BiometricDialog}. * @return a {@link BiometricDialog} * Creates a {@link BiometricPrompt}. * @return a {@link BiometricPrompt} * @throws IllegalArgumentException if any of the required fields are not set. */ public BiometricDialog build() { public BiometricPrompt build() { final CharSequence title = mBundle.getCharSequence(KEY_TITLE); final CharSequence negative = mBundle.getCharSequence(KEY_NEGATIVE_TEXT); Loading @@ -203,7 +203,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } else if (TextUtils.isEmpty(negative)) { throw new IllegalArgumentException("Negative text must be set and non-empty"); } return new BiometricDialog(mContext, mBundle, mPositiveButtonInfo, mNegativeButtonInfo); return new BiometricPrompt(mContext, mBundle, mPositiveButtonInfo, mNegativeButtonInfo); } } Loading @@ -213,7 +213,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan private ButtonInfo mPositiveButtonInfo; private ButtonInfo mNegativeButtonInfo; IBiometricDialogReceiver mDialogReceiver = new IBiometricDialogReceiver.Stub() { IBiometricPromptReceiver mDialogReceiver = new IBiometricPromptReceiver.Stub() { @Override public void onDialogDismissed(int reason) { // Check the reason and invoke OnClickListener(s) if necessary Loading @@ -229,7 +229,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } }; private BiometricDialog(Context context, Bundle bundle, private BiometricPrompt(Context context, Bundle bundle, ButtonInfo positiveButtonInfo, ButtonInfo negativeButtonInfo) { mBundle = bundle; mPositiveButtonInfo = positiveButtonInfo; Loading @@ -239,7 +239,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } /** * A wrapper class for the crypto objects supported by BiometricDialog. Currently the framework * A wrapper class for the crypto objects supported by BiometricPrompt. Currently the framework * supports {@link Signature}, {@link Cipher} and {@link Mac} objects. */ public static final class CryptoObject extends android.hardware.biometrics.CryptoObject { Loading Loading @@ -308,8 +308,8 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } /** * Callback structure provided to {@link BiometricDialog#authenticate(CancellationSignal, * Executor, AuthenticationCallback)} or {@link BiometricDialog#authenticate(CryptoObject, * Callback structure provided to {@link BiometricPrompt#authenticate(CancellationSignal, * Executor, AuthenticationCallback)} or {@link BiometricPrompt#authenticate(CryptoObject, * CancellationSignal, Executor, AuthenticationCallback)}. Users must provide an implementation * of this for listening to authentication events. */ Loading Loading @@ -378,7 +378,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan @NonNull CancellationSignal cancel, @NonNull @CallbackExecutor Executor executor, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (!(callback instanceof BiometricDialog.AuthenticationCallback)) { if (!(callback instanceof BiometricPrompt.AuthenticationCallback)) { throw new IllegalArgumentException("Callback cannot be casted"); } authenticate(crypto, cancel, executor, (AuthenticationCallback) callback); Loading @@ -395,7 +395,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan public void authenticate(@NonNull CancellationSignal cancel, @NonNull @CallbackExecutor Executor executor, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (!(callback instanceof BiometricDialog.AuthenticationCallback)) { if (!(callback instanceof BiometricPrompt.AuthenticationCallback)) { throw new IllegalArgumentException("Callback cannot be casted"); } authenticate(cancel, executor, (AuthenticationCallback) callback); Loading @@ -410,8 +410,8 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan * operation can be canceled by using the provided cancel object. The application will receive * authentication errors through {@link AuthenticationCallback}, and button events through the * corresponding callback set in {@link Builder#setNegativeButton(CharSequence, Executor, * DialogInterface.OnClickListener)}. It is safe to reuse the {@link BiometricDialog} object, * and calling {@link BiometricDialog#authenticate( CancellationSignal, Executor, * DialogInterface.OnClickListener)}. It is safe to reuse the {@link BiometricPrompt} object, * and calling {@link BiometricPrompt#authenticate( CancellationSignal, Executor, * AuthenticationCallback)} while an existing authentication attempt is occurring will stop the * previous client and start a new authentication. The interrupted client will receive a * cancelled notification through {@link AuthenticationCallback#onAuthenticationError(int, Loading Loading @@ -445,8 +445,8 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan * provided cancel object. The application will receive authentication errors through {@link * AuthenticationCallback}, and button events through the corresponding callback set in {@link * Builder#setNegativeButton(CharSequence, Executor, DialogInterface.OnClickListener)}. It is * safe to reuse the {@link BiometricDialog} object, and calling {@link * BiometricDialog#authenticate(CancellationSignal, Executor, AuthenticationCallback)} while * safe to reuse the {@link BiometricPrompt} object, and calling {@link * BiometricPrompt#authenticate(CancellationSignal, Executor, AuthenticationCallback)} while * an existing authentication attempt is occurring will stop the previous client and start a new * authentication. The interrupted client will receive a cancelled notification through {@link * AuthenticationCallback#onAuthenticationError(int, CharSequence)}. Loading @@ -470,15 +470,15 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan private boolean handlePreAuthenticationErrors(AuthenticationCallback callback, Executor executor) { if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { sendError(BiometricDialog.BIOMETRIC_ERROR_HW_NOT_PRESENT, callback, sendError(BiometricPrompt.BIOMETRIC_ERROR_HW_NOT_PRESENT, callback, executor); return true; } else if (!mFingerprintManager.isHardwareDetected()) { sendError(BiometricDialog.BIOMETRIC_ERROR_HW_UNAVAILABLE, callback, sendError(BiometricPrompt.BIOMETRIC_ERROR_HW_UNAVAILABLE, callback, executor); return true; } else if (!mFingerprintManager.hasEnrolledFingerprints()) { sendError(BiometricDialog.BIOMETRIC_ERROR_NO_BIOMETRICS, callback, sendError(BiometricPrompt.BIOMETRIC_ERROR_NO_BIOMETRICS, callback, executor); return true; } Loading core/java/android/hardware/biometrics/IBiometricDialogReceiver.aidl→core/java/android/hardware/biometrics/IBiometricPromptReceiver.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -19,9 +19,9 @@ import android.os.Bundle; import android.os.UserHandle; /** * Communication channel from the BiometricDialog (SysUI) back to AuthenticationClient. * Communication channel from the BiometricPrompt (SysUI) back to AuthenticationClient. * @hide */ oneway interface IBiometricDialogReceiver { oneway interface IBiometricPromptReceiver { void onDialogDismissed(int reason); } core/java/android/hardware/fingerprint/FingerprintManager.java +22 −22 Original line number Diff line number Diff line Loading @@ -31,9 +31,9 @@ import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.BiometricDialog; import android.hardware.biometrics.BiometricFingerprintConstants; import android.hardware.biometrics.IBiometricDialogReceiver; import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.IBiometricPromptReceiver; import android.os.Binder; import android.os.Bundle; import android.os.CancellationSignal; Loading @@ -57,7 +57,7 @@ import javax.crypto.Mac; /** * A class that coordinates access to the fingerprint hardware. * @deprecated See {@link BiometricDialog} which shows a system-provided dialog upon starting * @deprecated See {@link BiometricPrompt} which shows a system-provided dialog upon starting * authentication. In a world where devices may have different types of biometric authentication, * it's much more realistic to have a system-provided authentication dialog since the method may * vary by vendor/device. Loading Loading @@ -111,7 +111,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { /** * A wrapper class for the crypto objects supported by FingerprintManager. Currently the * framework supports {@link Signature}, {@link Cipher} and {@link Mac} objects. * @deprecated See {@link android.hardware.biometrics.BiometricDialog.CryptoObject} * @deprecated See {@link android.hardware.biometrics.BiometricPrompt.CryptoObject} */ @Deprecated public static final class CryptoObject extends android.hardware.biometrics.CryptoObject { Loading Loading @@ -155,7 +155,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { /** * Container for callback data from {@link FingerprintManager#authenticate(CryptoObject, * CancellationSignal, int, AuthenticationCallback, Handler)}. * @deprecated See {@link android.hardware.biometrics.BiometricDialog.AuthenticationResult} * @deprecated See {@link android.hardware.biometrics.BiometricPrompt.AuthenticationResult} */ @Deprecated public static class AuthenticationResult { Loading Loading @@ -204,7 +204,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * FingerprintManager#authenticate(CryptoObject, CancellationSignal, * int, AuthenticationCallback, Handler) } must provide an implementation of this for listening to * fingerprint events. * @deprecated See {@link android.hardware.biometrics.BiometricDialog.AuthenticationCallback} * @deprecated See {@link android.hardware.biometrics.BiometricPrompt.AuthenticationCallback} */ @Deprecated public static abstract class AuthenticationCallback Loading Loading @@ -378,10 +378,10 @@ public class FingerprintManager implements BiometricFingerprintConstants { * by <a href="{@docRoot}training/articles/keystore.html">Android Keystore * facility</a>. * @throws IllegalStateException if the crypto primitive is not initialized. * @deprecated See {@link BiometricDialog#authenticate(CancellationSignal, Executor, * BiometricDialog.AuthenticationCallback)} and {@link BiometricDialog#authenticate( * BiometricDialog.CryptoObject, CancellationSignal, Executor, * BiometricDialog.AuthenticationCallback)} * @deprecated See {@link BiometricPrompt#authenticate(CancellationSignal, Executor, * BiometricPrompt.AuthenticationCallback)} and {@link BiometricPrompt#authenticate( * BiometricPrompt.CryptoObject, CancellationSignal, Executor, * BiometricPrompt.AuthenticationCallback)} */ @Deprecated @RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT}) Loading Loading @@ -444,7 +444,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { /** * Per-user version, see {@link FingerprintManager#authenticate(CryptoObject, * CancellationSignal, Bundle, Executor, IBiometricDialogReceiver, AuthenticationCallback)} * CancellationSignal, Bundle, Executor, IBiometricPromptReceiver, AuthenticationCallback)} * @param userId the user ID that the fingerprint hardware will authenticate for. */ private void authenticate(int userId, Loading @@ -452,7 +452,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @NonNull CancellationSignal cancel, @NonNull Bundle bundle, @NonNull @CallbackExecutor Executor executor, @NonNull IBiometricDialogReceiver receiver, @NonNull IBiometricPromptReceiver receiver, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { mCryptoObject = crypto; if (cancel.isCanceled()) { Loading Loading @@ -480,8 +480,8 @@ public class FingerprintManager implements BiometricFingerprintConstants { } /** * Private method, see {@link BiometricDialog#authenticate(CancellationSignal, Executor, * BiometricDialog.AuthenticationCallback)} * Private method, see {@link BiometricPrompt#authenticate(CancellationSignal, Executor, * BiometricPrompt.AuthenticationCallback)} * @param cancel * @param executor * @param callback Loading @@ -491,7 +491,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @NonNull CancellationSignal cancel, @NonNull Bundle bundle, @NonNull @CallbackExecutor Executor executor, @NonNull IBiometricDialogReceiver receiver, @NonNull IBiometricPromptReceiver receiver, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (cancel == null) { throw new IllegalArgumentException("Must supply a cancellation signal"); Loading @@ -512,8 +512,8 @@ public class FingerprintManager implements BiometricFingerprintConstants { } /** * Private method, see {@link BiometricDialog#authenticate(BiometricDialog.CryptoObject, * CancellationSignal, Executor, BiometricDialog.AuthenticationCallback)} * Private method, see {@link BiometricPrompt#authenticate(BiometricPrompt.CryptoObject, * CancellationSignal, Executor, BiometricPrompt.AuthenticationCallback)} * @param crypto * @param cancel * @param executor Loading @@ -524,7 +524,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @NonNull CancellationSignal cancel, @NonNull Bundle bundle, @NonNull @CallbackExecutor Executor executor, @NonNull IBiometricDialogReceiver receiver, @NonNull IBiometricPromptReceiver receiver, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (crypto == null) { throw new IllegalArgumentException("Must supply a crypto object"); Loading Loading @@ -743,7 +743,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * Determine if there is at least one fingerprint enrolled. * * @return true if at least one fingerprint is enrolled, false otherwise * @deprecated See {@link BiometricDialog} and * @deprecated See {@link BiometricPrompt} and * {@link FingerprintManager#FINGERPRINT_ERROR_NO_FINGERPRINTS} */ @Deprecated Loading Loading @@ -777,7 +777,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * Determine if fingerprint hardware is present and functional. * * @return true if hardware is present and functional, false otherwise. * @deprecated See {@link BiometricDialog} and * @deprecated See {@link BiometricPrompt} and * {@link FingerprintManager#FINGERPRINT_ERROR_HW_UNAVAILABLE} */ @Deprecated Loading Loading @@ -1158,7 +1158,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @Override // binder call public void onError(long deviceId, int error, int vendorCode) { if (mExecutor != null) { // BiometricDialog case // BiometricPrompt case if (error == FingerprintManager.FINGERPRINT_ERROR_USER_CANCELED) { // User tapped somewhere to cancel, the biometric dialog is already dismissed. mExecutor.execute(() -> { Loading @@ -1172,7 +1172,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { mExecutor.execute(() -> { sendErrorResult(deviceId, error, vendorCode); }); }, BiometricDialog.HIDE_DIALOG_DELAY); }, BiometricPrompt.HIDE_DIALOG_DELAY); } } else { mHandler.obtainMessage(MSG_ERROR, error, vendorCode, deviceId).sendToTarget(); Loading Loading
Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -145,7 +145,7 @@ java_library { ":libcamera_client_framework_aidl", "core/java/android/hardware/IConsumerIrService.aidl", "core/java/android/hardware/ISerialManager.aidl", "core/java/android/hardware/biometrics/IBiometricDialogReceiver.aidl", "core/java/android/hardware/biometrics/IBiometricPromptReceiver.aidl", "core/java/android/hardware/display/IDisplayManager.aidl", "core/java/android/hardware/display/IDisplayManagerCallback.aidl", "core/java/android/hardware/display/IVirtualDisplayCallback.aidl", Loading
api/current.txt +19 −19 Original line number Diff line number Diff line Loading @@ -15758,9 +15758,9 @@ package android.hardware { package android.hardware.biometrics { public class BiometricDialog { method public void authenticate(android.hardware.biometrics.BiometricDialog.CryptoObject, android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricDialog.AuthenticationCallback); method public void authenticate(android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricDialog.AuthenticationCallback); public class BiometricPrompt { method public void authenticate(android.hardware.biometrics.BiometricPrompt.CryptoObject, android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricPrompt.AuthenticationCallback); method public void authenticate(android.os.CancellationSignal, java.util.concurrent.Executor, android.hardware.biometrics.BiometricPrompt.AuthenticationCallback); field public static final int BIOMETRIC_ACQUIRED_GOOD = 0; // 0x0 field public static final int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 3; // 0x3 field public static final int BIOMETRIC_ACQUIRED_INSUFFICIENT = 2; // 0x2 Loading @@ -15780,31 +15780,31 @@ package android.hardware.biometrics { field public static final int BIOMETRIC_ERROR_VENDOR = 8; // 0x8 } public static abstract class BiometricDialog.AuthenticationCallback { ctor public BiometricDialog.AuthenticationCallback(); public static abstract class BiometricPrompt.AuthenticationCallback { ctor public BiometricPrompt.AuthenticationCallback(); method public void onAuthenticationError(int, java.lang.CharSequence); method public void onAuthenticationFailed(); method public void onAuthenticationHelp(int, java.lang.CharSequence); method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricDialog.AuthenticationResult); method public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult); } public static class BiometricDialog.AuthenticationResult { method public android.hardware.biometrics.BiometricDialog.CryptoObject getCryptoObject(); public static class BiometricPrompt.AuthenticationResult { method public android.hardware.biometrics.BiometricPrompt.CryptoObject getCryptoObject(); } public static class BiometricDialog.Builder { ctor public BiometricDialog.Builder(android.content.Context); method public android.hardware.biometrics.BiometricDialog build(); method public android.hardware.biometrics.BiometricDialog.Builder setDescription(java.lang.CharSequence); method public android.hardware.biometrics.BiometricDialog.Builder setNegativeButton(java.lang.CharSequence, java.util.concurrent.Executor, android.content.DialogInterface.OnClickListener); method public android.hardware.biometrics.BiometricDialog.Builder setSubtitle(java.lang.CharSequence); method public android.hardware.biometrics.BiometricDialog.Builder setTitle(java.lang.CharSequence); public static class BiometricPrompt.Builder { ctor public BiometricPrompt.Builder(android.content.Context); method public android.hardware.biometrics.BiometricPrompt build(); method public android.hardware.biometrics.BiometricPrompt.Builder setDescription(java.lang.CharSequence); method public android.hardware.biometrics.BiometricPrompt.Builder setNegativeButton(java.lang.CharSequence, java.util.concurrent.Executor, android.content.DialogInterface.OnClickListener); method public android.hardware.biometrics.BiometricPrompt.Builder setSubtitle(java.lang.CharSequence); method public android.hardware.biometrics.BiometricPrompt.Builder setTitle(java.lang.CharSequence); } public static final class BiometricDialog.CryptoObject { ctor public BiometricDialog.CryptoObject(java.security.Signature); ctor public BiometricDialog.CryptoObject(javax.crypto.Cipher); ctor public BiometricDialog.CryptoObject(javax.crypto.Mac); public static final class BiometricPrompt.CryptoObject { ctor public BiometricPrompt.CryptoObject(java.security.Signature); ctor public BiometricPrompt.CryptoObject(javax.crypto.Cipher); ctor public BiometricPrompt.CryptoObject(javax.crypto.Mac); method public javax.crypto.Cipher getCipher(); method public javax.crypto.Mac getMac(); method public java.security.Signature getSignature();
core/java/android/hardware/biometrics/BiometricDialog.java→core/java/android/hardware/biometrics/BiometricPrompt.java +19 −19 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ import javax.crypto.Mac; /** * A class that manages a system-provided biometric dialog. */ public class BiometricDialog implements BiometricAuthenticator, BiometricConstants { public class BiometricPrompt implements BiometricAuthenticator, BiometricConstants { /** * @hide Loading Loading @@ -190,11 +190,11 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } /** * Creates a {@link BiometricDialog}. * @return a {@link BiometricDialog} * Creates a {@link BiometricPrompt}. * @return a {@link BiometricPrompt} * @throws IllegalArgumentException if any of the required fields are not set. */ public BiometricDialog build() { public BiometricPrompt build() { final CharSequence title = mBundle.getCharSequence(KEY_TITLE); final CharSequence negative = mBundle.getCharSequence(KEY_NEGATIVE_TEXT); Loading @@ -203,7 +203,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } else if (TextUtils.isEmpty(negative)) { throw new IllegalArgumentException("Negative text must be set and non-empty"); } return new BiometricDialog(mContext, mBundle, mPositiveButtonInfo, mNegativeButtonInfo); return new BiometricPrompt(mContext, mBundle, mPositiveButtonInfo, mNegativeButtonInfo); } } Loading @@ -213,7 +213,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan private ButtonInfo mPositiveButtonInfo; private ButtonInfo mNegativeButtonInfo; IBiometricDialogReceiver mDialogReceiver = new IBiometricDialogReceiver.Stub() { IBiometricPromptReceiver mDialogReceiver = new IBiometricPromptReceiver.Stub() { @Override public void onDialogDismissed(int reason) { // Check the reason and invoke OnClickListener(s) if necessary Loading @@ -229,7 +229,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } }; private BiometricDialog(Context context, Bundle bundle, private BiometricPrompt(Context context, Bundle bundle, ButtonInfo positiveButtonInfo, ButtonInfo negativeButtonInfo) { mBundle = bundle; mPositiveButtonInfo = positiveButtonInfo; Loading @@ -239,7 +239,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } /** * A wrapper class for the crypto objects supported by BiometricDialog. Currently the framework * A wrapper class for the crypto objects supported by BiometricPrompt. Currently the framework * supports {@link Signature}, {@link Cipher} and {@link Mac} objects. */ public static final class CryptoObject extends android.hardware.biometrics.CryptoObject { Loading Loading @@ -308,8 +308,8 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan } /** * Callback structure provided to {@link BiometricDialog#authenticate(CancellationSignal, * Executor, AuthenticationCallback)} or {@link BiometricDialog#authenticate(CryptoObject, * Callback structure provided to {@link BiometricPrompt#authenticate(CancellationSignal, * Executor, AuthenticationCallback)} or {@link BiometricPrompt#authenticate(CryptoObject, * CancellationSignal, Executor, AuthenticationCallback)}. Users must provide an implementation * of this for listening to authentication events. */ Loading Loading @@ -378,7 +378,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan @NonNull CancellationSignal cancel, @NonNull @CallbackExecutor Executor executor, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (!(callback instanceof BiometricDialog.AuthenticationCallback)) { if (!(callback instanceof BiometricPrompt.AuthenticationCallback)) { throw new IllegalArgumentException("Callback cannot be casted"); } authenticate(crypto, cancel, executor, (AuthenticationCallback) callback); Loading @@ -395,7 +395,7 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan public void authenticate(@NonNull CancellationSignal cancel, @NonNull @CallbackExecutor Executor executor, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (!(callback instanceof BiometricDialog.AuthenticationCallback)) { if (!(callback instanceof BiometricPrompt.AuthenticationCallback)) { throw new IllegalArgumentException("Callback cannot be casted"); } authenticate(cancel, executor, (AuthenticationCallback) callback); Loading @@ -410,8 +410,8 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan * operation can be canceled by using the provided cancel object. The application will receive * authentication errors through {@link AuthenticationCallback}, and button events through the * corresponding callback set in {@link Builder#setNegativeButton(CharSequence, Executor, * DialogInterface.OnClickListener)}. It is safe to reuse the {@link BiometricDialog} object, * and calling {@link BiometricDialog#authenticate( CancellationSignal, Executor, * DialogInterface.OnClickListener)}. It is safe to reuse the {@link BiometricPrompt} object, * and calling {@link BiometricPrompt#authenticate( CancellationSignal, Executor, * AuthenticationCallback)} while an existing authentication attempt is occurring will stop the * previous client and start a new authentication. The interrupted client will receive a * cancelled notification through {@link AuthenticationCallback#onAuthenticationError(int, Loading Loading @@ -445,8 +445,8 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan * provided cancel object. The application will receive authentication errors through {@link * AuthenticationCallback}, and button events through the corresponding callback set in {@link * Builder#setNegativeButton(CharSequence, Executor, DialogInterface.OnClickListener)}. It is * safe to reuse the {@link BiometricDialog} object, and calling {@link * BiometricDialog#authenticate(CancellationSignal, Executor, AuthenticationCallback)} while * safe to reuse the {@link BiometricPrompt} object, and calling {@link * BiometricPrompt#authenticate(CancellationSignal, Executor, AuthenticationCallback)} while * an existing authentication attempt is occurring will stop the previous client and start a new * authentication. The interrupted client will receive a cancelled notification through {@link * AuthenticationCallback#onAuthenticationError(int, CharSequence)}. Loading @@ -470,15 +470,15 @@ public class BiometricDialog implements BiometricAuthenticator, BiometricConstan private boolean handlePreAuthenticationErrors(AuthenticationCallback callback, Executor executor) { if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { sendError(BiometricDialog.BIOMETRIC_ERROR_HW_NOT_PRESENT, callback, sendError(BiometricPrompt.BIOMETRIC_ERROR_HW_NOT_PRESENT, callback, executor); return true; } else if (!mFingerprintManager.isHardwareDetected()) { sendError(BiometricDialog.BIOMETRIC_ERROR_HW_UNAVAILABLE, callback, sendError(BiometricPrompt.BIOMETRIC_ERROR_HW_UNAVAILABLE, callback, executor); return true; } else if (!mFingerprintManager.hasEnrolledFingerprints()) { sendError(BiometricDialog.BIOMETRIC_ERROR_NO_BIOMETRICS, callback, sendError(BiometricPrompt.BIOMETRIC_ERROR_NO_BIOMETRICS, callback, executor); return true; } Loading
core/java/android/hardware/biometrics/IBiometricDialogReceiver.aidl→core/java/android/hardware/biometrics/IBiometricPromptReceiver.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -19,9 +19,9 @@ import android.os.Bundle; import android.os.UserHandle; /** * Communication channel from the BiometricDialog (SysUI) back to AuthenticationClient. * Communication channel from the BiometricPrompt (SysUI) back to AuthenticationClient. * @hide */ oneway interface IBiometricDialogReceiver { oneway interface IBiometricPromptReceiver { void onDialogDismissed(int reason); }
core/java/android/hardware/fingerprint/FingerprintManager.java +22 −22 Original line number Diff line number Diff line Loading @@ -31,9 +31,9 @@ import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.BiometricDialog; import android.hardware.biometrics.BiometricFingerprintConstants; import android.hardware.biometrics.IBiometricDialogReceiver; import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.IBiometricPromptReceiver; import android.os.Binder; import android.os.Bundle; import android.os.CancellationSignal; Loading @@ -57,7 +57,7 @@ import javax.crypto.Mac; /** * A class that coordinates access to the fingerprint hardware. * @deprecated See {@link BiometricDialog} which shows a system-provided dialog upon starting * @deprecated See {@link BiometricPrompt} which shows a system-provided dialog upon starting * authentication. In a world where devices may have different types of biometric authentication, * it's much more realistic to have a system-provided authentication dialog since the method may * vary by vendor/device. Loading Loading @@ -111,7 +111,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { /** * A wrapper class for the crypto objects supported by FingerprintManager. Currently the * framework supports {@link Signature}, {@link Cipher} and {@link Mac} objects. * @deprecated See {@link android.hardware.biometrics.BiometricDialog.CryptoObject} * @deprecated See {@link android.hardware.biometrics.BiometricPrompt.CryptoObject} */ @Deprecated public static final class CryptoObject extends android.hardware.biometrics.CryptoObject { Loading Loading @@ -155,7 +155,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { /** * Container for callback data from {@link FingerprintManager#authenticate(CryptoObject, * CancellationSignal, int, AuthenticationCallback, Handler)}. * @deprecated See {@link android.hardware.biometrics.BiometricDialog.AuthenticationResult} * @deprecated See {@link android.hardware.biometrics.BiometricPrompt.AuthenticationResult} */ @Deprecated public static class AuthenticationResult { Loading Loading @@ -204,7 +204,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * FingerprintManager#authenticate(CryptoObject, CancellationSignal, * int, AuthenticationCallback, Handler) } must provide an implementation of this for listening to * fingerprint events. * @deprecated See {@link android.hardware.biometrics.BiometricDialog.AuthenticationCallback} * @deprecated See {@link android.hardware.biometrics.BiometricPrompt.AuthenticationCallback} */ @Deprecated public static abstract class AuthenticationCallback Loading Loading @@ -378,10 +378,10 @@ public class FingerprintManager implements BiometricFingerprintConstants { * by <a href="{@docRoot}training/articles/keystore.html">Android Keystore * facility</a>. * @throws IllegalStateException if the crypto primitive is not initialized. * @deprecated See {@link BiometricDialog#authenticate(CancellationSignal, Executor, * BiometricDialog.AuthenticationCallback)} and {@link BiometricDialog#authenticate( * BiometricDialog.CryptoObject, CancellationSignal, Executor, * BiometricDialog.AuthenticationCallback)} * @deprecated See {@link BiometricPrompt#authenticate(CancellationSignal, Executor, * BiometricPrompt.AuthenticationCallback)} and {@link BiometricPrompt#authenticate( * BiometricPrompt.CryptoObject, CancellationSignal, Executor, * BiometricPrompt.AuthenticationCallback)} */ @Deprecated @RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT}) Loading Loading @@ -444,7 +444,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { /** * Per-user version, see {@link FingerprintManager#authenticate(CryptoObject, * CancellationSignal, Bundle, Executor, IBiometricDialogReceiver, AuthenticationCallback)} * CancellationSignal, Bundle, Executor, IBiometricPromptReceiver, AuthenticationCallback)} * @param userId the user ID that the fingerprint hardware will authenticate for. */ private void authenticate(int userId, Loading @@ -452,7 +452,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @NonNull CancellationSignal cancel, @NonNull Bundle bundle, @NonNull @CallbackExecutor Executor executor, @NonNull IBiometricDialogReceiver receiver, @NonNull IBiometricPromptReceiver receiver, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { mCryptoObject = crypto; if (cancel.isCanceled()) { Loading Loading @@ -480,8 +480,8 @@ public class FingerprintManager implements BiometricFingerprintConstants { } /** * Private method, see {@link BiometricDialog#authenticate(CancellationSignal, Executor, * BiometricDialog.AuthenticationCallback)} * Private method, see {@link BiometricPrompt#authenticate(CancellationSignal, Executor, * BiometricPrompt.AuthenticationCallback)} * @param cancel * @param executor * @param callback Loading @@ -491,7 +491,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @NonNull CancellationSignal cancel, @NonNull Bundle bundle, @NonNull @CallbackExecutor Executor executor, @NonNull IBiometricDialogReceiver receiver, @NonNull IBiometricPromptReceiver receiver, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (cancel == null) { throw new IllegalArgumentException("Must supply a cancellation signal"); Loading @@ -512,8 +512,8 @@ public class FingerprintManager implements BiometricFingerprintConstants { } /** * Private method, see {@link BiometricDialog#authenticate(BiometricDialog.CryptoObject, * CancellationSignal, Executor, BiometricDialog.AuthenticationCallback)} * Private method, see {@link BiometricPrompt#authenticate(BiometricPrompt.CryptoObject, * CancellationSignal, Executor, BiometricPrompt.AuthenticationCallback)} * @param crypto * @param cancel * @param executor Loading @@ -524,7 +524,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @NonNull CancellationSignal cancel, @NonNull Bundle bundle, @NonNull @CallbackExecutor Executor executor, @NonNull IBiometricDialogReceiver receiver, @NonNull IBiometricPromptReceiver receiver, @NonNull BiometricAuthenticator.AuthenticationCallback callback) { if (crypto == null) { throw new IllegalArgumentException("Must supply a crypto object"); Loading Loading @@ -743,7 +743,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * Determine if there is at least one fingerprint enrolled. * * @return true if at least one fingerprint is enrolled, false otherwise * @deprecated See {@link BiometricDialog} and * @deprecated See {@link BiometricPrompt} and * {@link FingerprintManager#FINGERPRINT_ERROR_NO_FINGERPRINTS} */ @Deprecated Loading Loading @@ -777,7 +777,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * Determine if fingerprint hardware is present and functional. * * @return true if hardware is present and functional, false otherwise. * @deprecated See {@link BiometricDialog} and * @deprecated See {@link BiometricPrompt} and * {@link FingerprintManager#FINGERPRINT_ERROR_HW_UNAVAILABLE} */ @Deprecated Loading Loading @@ -1158,7 +1158,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { @Override // binder call public void onError(long deviceId, int error, int vendorCode) { if (mExecutor != null) { // BiometricDialog case // BiometricPrompt case if (error == FingerprintManager.FINGERPRINT_ERROR_USER_CANCELED) { // User tapped somewhere to cancel, the biometric dialog is already dismissed. mExecutor.execute(() -> { Loading @@ -1172,7 +1172,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { mExecutor.execute(() -> { sendErrorResult(deviceId, error, vendorCode); }); }, BiometricDialog.HIDE_DIALOG_DELAY); }, BiometricPrompt.HIDE_DIALOG_DELAY); } } else { mHandler.obtainMessage(MSG_ERROR, error, vendorCode, deviceId).sendToTarget(); Loading