0

嗨,我是一个新手,目前正在学习移动开发。我正在开发一个应用程序,当用户按下登录按钮时,它只会提供指纹身份验证选项。但就我而言,它为用户提供了使用指纹或面部身份验证的选项。如何将用户限制为仅指纹身份验证? 在这里,我使用以下代码:

package com.example.fingerprintauth
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.biometric.BiometricPrompt

import android.widget.Button
import android.widget.Toast
import androidx.core.content.ContextCompat

import java.util.concurrent.Executor

class MainActivity : AppCompatActivity() {
    private lateinit var executor: Executor
    private lateinit var biometricPrompt: BiometricPrompt
    private lateinit var prompt: BiometricPrompt.PromptInfo
    //private var flag =0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        executor=ContextCompat.getMainExecutor(this)
        biometricPrompt= BiometricPrompt(this@MainActivity,executor,object:BiometricPrompt.AuthenticationCallback(){
            override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
                super.onAuthenticationError(errorCode, errString)
                //authStatusTv.text = "Authentication Error: $errString"
                Toast.makeText(this@MainActivity,"Authentication Error: $errString",Toast.LENGTH_SHORT).show()
            }

            override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
                super.onAuthenticationSucceeded(result)
                Toast.makeText(this@MainActivity,"Authentication Success",Toast.LENGTH_SHORT).show()
                startActivity(
                    Intent(
                        this@MainActivity, Home::class.java
                    )
                )
            }

            override fun onAuthenticationFailed() {
                super.onAuthenticationFailed()
                //authStatusTv.text = "Authentication Failed"
                Toast.makeText(this@MainActivity,"Authentication Failed",Toast.LENGTH_SHORT).show()
            }
        })
        val promptInfo=BiometricPrompt.PromptInfo.Builder()
            .setTitle("Biometric Authentication")
            .setSubtitle("Login Using Fingerprint authentication")
            .setDeviceCredentialAllowed(true)
            //.setAllowedAuthenticators(BIOMETRIC_STRONG or DEVICE_CREDENTIAL)
            .build()




        var authbtn = findViewById<Button>(R.id.authbtn)
        authbtn.setOnClickListener {
            biometricPrompt.authenticate(promptInfo)

        }
    }
}
4

0 回答 0