我想使用生物识别或密码来锁定/解锁我的应用程序中的图像。生物特征 API 可以检测生物特征,但“使用密码”选项采用设备的密码/密码。我希望用户在应用内输入密码和他想要的任何密码。
问问题
479 次
2 回答
1
在您的应用程序中同时使用生物特征和密码是一种常见的模式。本质上,这个想法是在支持它的设备上使用生物识别技术,并在其他情况下使用帐户/应用程序密码,如下所示:
override fun onClick(view: View) { // user clicks a button in your app to authenticate
val promptInfo = createPromptInfo()
if (BiometricManager.from(context)
.canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
biometricPrompt.authenticate(promptInfo, cryptoObject)
} else {
loginWithPassword()
}
}
此外,在创建 PromptInfo 时,你会做.setNegativeButtonText(getString(R.string.prompt_info_use_app_password))
,然后在onAuthenticationError()
回调中你会做
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
Log.d(TAG, "$errorCode :: $errString")
if(errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {
loginWithPassword() // Because negative button says use account/app password
}
}
注意使用cryptoObject
. 这是因为密码或生物特征认证本身并不会加密您的数据。因此,如果您真的希望您的数据(在这种情况下是您的照片)是私密的,您必须对它们进行加密。
然后最后在onAuthenticationSucceeded()
回调中你会显示你的数据
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
Log.d(TAG, "Authentication was successful")
// Proceed with viewing the private encrypted data.
showEncryptedData(result.cryptoObject)
}
免责声明:我为 Android/Google 工作,特别是在生物识别方面。我可以回答您的后续问题
于 2019-11-25T20:52:45.993 回答
-1
我使用了否定按钮。我将否定按钮的文本设置为“使用密码”,并在 onAuthenticationError 回调方法中处理否定按钮 onclick。
if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {
//show the in app password dialog
}
于 2019-11-19T17:13:44.697 回答