Biometric para Kotlin: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biometric para Kotlin: guía completa con ejemplos prácticos

La autenticación biométrica se ha convertido en una parte esencial de las aplicaciones móviles modernas. Permite a los usuarios verificar su identidad mediante huella dactilar, escáner facial o iris, lo que resulta mucho más cómodo y seguro que escribir contraseñas. La librería Biometric para Kotlin (parte de AndroidX) proporciona una API unificada para trabajar con todos los sensores biométricos en dispositivos Android.

¿Por qué usar esta librería? Primero, abstrae al desarrollador de las diferencias en la implementación de sensores biométricos entre fabricantes. Segundo, maneja automáticamente escenarios donde la biometría no está disponible (por ejemplo, el dispositivo no tiene escáner) o está bloqueada. Tercero, se integra estrechamente con Android Keystore, permitiendo crear claves criptográficamente seguras que solo se pueden usar tras una autenticación exitosa del usuario.

En este artículo, analizaremos en detalle todos los aspectos del trabajo con la librería Biometric para Kotlin: desde la instalación y un ejemplo mínimo hasta técnicas avanzadas y errores típicos. Aprenderás cómo agregar autenticación biométrica a tu aplicación, haciéndola segura y fácil de usar.

Instalación

Para usar la librería Biometric en tu proyecto Android con Kotlin, agrega la siguiente dependencia en el archivo build.gradle (a nivel de módulo):

dependencies {
    implementation("androidx.biometric:biometric:1.2.0-alpha05")
}

Asegúrate también de declarar el permiso para usar sensores biométricos en el archivo AndroidManifest.xml:

Si tu aplicación está orientada a Android 12 (API 31) o superior, se recomienda agregar también el permiso para determinar con precisión el tipo de biometría:


Inicio rápido: ejemplo mínimo funcional

Vamos a crear una Activity simple que, al presionar un botón, inicie la autenticación biométrica y muestre el resultado en un Toast.

import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricPrompt
import androidx.core.content.ContextCompat
import java.util.concurrent.Executors

class MainActivity : AppCompatActivity() {

    private lateinit var biometricPrompt: BiometricPrompt
    private lateinit var promptInfo: BiometricPrompt.PromptInfo

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val authButton: Button = findViewById(R.id.auth_button)

        // Verificamos si la biometría está disponible en el dispositivo
        val biometricManager = BiometricManager.from(this)
        when (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG)) {
            BiometricManager.BIOMETRIC_SUCCESS -> {
                // Biometría disponible, configuramos el diálogo
                setupBiometricPrompt()
            }
            BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
                Toast.makeText(this, "El dispositivo no tiene sensor biométrico", Toast.LENGTH_LONG).show()
            }
            BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> {
                Toast.makeText(this, "El sensor biométrico no está disponible temporalmente", Toast.LENGTH_LONG).show()
            }
            BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
                Toast.makeText(this, "No hay datos biométricos registrados                    

Recommendations