You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13无屏幕锁时调用Passkey API验证异常问题咨询

解决Android 13未设置屏幕锁时Passkey验证抛出GetCredentialCancellationException的问题

异常信息

GetCredentialException: activity is cancelled by the user.
androidx.credentials.exceptions.GetCredentialCancellationException: activity is cancelled by the user.

问题原因

Android 13及以上版本中,Passkey的身份验证流程依赖设备的屏幕锁(PIN、图案、指纹等)完成安全校验。当设备未设置任何屏幕锁时,系统无法完成必要的身份验证环节,直接终止Passkey验证流程,抛出该取消异常。

解决办法

1. 提前检测设备屏幕锁状态

在调用Passkey API前,先通过KeyguardManager检查设备是否已设置安全锁,若未设置则引导用户前往设置页面配置:

val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (!keyguardManager.isDeviceSecure) {
    Toast.makeText(this, "请先设置屏幕锁以使用Passkey验证", Toast.LENGTH_SHORT).show()
    startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
    return
}
// 后续执行Passkey验证逻辑

2. 捕获异常并针对性处理

在调用Passkey API的代码块中捕获GetCredentialCancellationException,区分是用户主动取消还是因无屏幕锁导致的流程终止:

try {
    val credentialManager = CredentialManager.create(this)
    val request = GetCredentialRequest.Builder()
        .addCredentialOption(GetPasskeyOption())
        .build()
    val result = credentialManager.getCredential(this, request)
    // 处理Passkey验证成功逻辑
} catch (cancellationEx: GetCredentialCancellationException) {
    val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
    if (!keyguardManager.isDeviceSecure) {
        Toast.makeText(this, "未设置屏幕锁无法完成验证,请先配置屏幕锁", Toast.LENGTH_SHORT).show()
        startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
    } else {
        // 用户主动取消验证的处理逻辑
        Toast.makeText(this, "验证已取消", Toast.LENGTH_SHORT).show()
    }
} catch (generalEx: GetCredentialException) {
    // 处理其他Passkey验证异常
    Toast.makeText(this, "验证失败:${generalEx.message}", Toast.LENGTH_SHORT).show()
}

关键说明

Android系统对Passkey的安全机制要求是硬性规则,无法绕过屏幕锁直接完成验证流程。必须确保设备配置了至少一种屏幕锁(PIN、图案、指纹、面部识别等),才能正常执行Passkey的验证流程。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:07:14