Biometric authentication has become a standard feature in modern Android applications, offering users a secure and convenient way to access their accounts. With the rise of fintech apps, mobile banking, and sensitive data handling on smartphones, integrating robust biometric authentication is no longer optional—it’s essential.
In this guide, we’ll walk through the key steps for implementing biometric authentication in an Android app using the BiometricPrompt API, Jetpack Compose, and other relevant tools. Whether you’re building a finance-related app or any application requiring secure user verification, this step-by-step tutorial will help you get started.
Step 1: Set Up Dependencies
Before diving into implementation, ensure that your project includes the necessary dependencies. The AndroidX Biometric library provides a consistent interface across different Android versions and devices. Add the following line to your build.gradle
file:
implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha03'
This version supports both fingerprint and face recognition modalities, abstracting away much of the complexity involved in handling various hardware capabilities .
Step 2: Check Biometric Availability
Before prompting the user for biometric authentication, it’s important to check whether the device supports it. You can use the BiometricManager
class to determine if biometric authentication is available and set up properly:
val biometricManager = BiometricManager.from(context)
when (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG or BiometricManager.Authenticators.DEVICE_CREDENTIAL)) {
BiometricManager.BIOMETRIC_SUCCESS -> Log.d("Biometric", "App can authenticate using biometrics.")
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> // No biometric features available
BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> // Biometric features are unavailable
BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> // The user hasn't enrolled any biometric credentials
}
This ensures your app gracefully handles cases where biometric authentication isn’t possible .
Step 3: Create the Biometric Authentication Prompt
Using the BiometricPrompt
API, you can display a system-provided authentication dialog. This approach ensures consistency and security, as the prompt is managed by the operating system:
val executor = ContextCompat.getMainExecutor(context)
val biometricPrompt = BiometricPrompt(activity, executor, object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
// Handle successful authentication
}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
// Handle error
}
})
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Log in with biometrics")
.setSubtitle("Use your fingerprint or face to sign in")
.setNegativeButtonText("Cancel")
.build()
biometricPrompt.authenticate(promptInfo)
This code creates a prompt that allows users to authenticate via fingerprint or facial recognition .
Step 4: Handle Authentication Results
Once the user interacts with the biometric prompt, the result is returned via the AuthenticationCallback
. You should handle success, error, and failure scenarios appropriately. For example, after a successful authentication, you might unlock a secure section of your app or decrypt stored data .
Step 5: Integrate with Jetpack Compose (Optional)
If you’re using Jetpack Compose, you can integrate biometric authentication seamlessly into your UI. Wrap the authentication logic inside a composable function and manage state using ViewModel
and LiveData
to keep your UI reactive and testable .
Conclusion
Implementing biometric authentication in Android apps enhances security and improves the user experience. By leveraging the AndroidX Biometric library and following best practices, developers can ensure compatibility across a wide range of devices while maintaining high security standards.
Whether you’re developing a fintech app, enterprise solution, or personal productivity tool, adding biometric login support is a worthwhile investment. With clear documentation and structured implementation steps, integrating biometric authentication becomes a straightforward process that pays off in both usability and trustworthiness .