0

我目前正在我的应用程序中的 [ https://github.com/googlesamples/android-FingerprintDialog]进行指纹身份验证,但我无法检测到添加或删除的任何新指纹。每当指纹管理器发生更改时,我都在寻找回调/事件。

我对 KeyPermanentlyInvalidatedException 的理解是,它是在例如删除指纹或在设备设置中添加新指纹时抛出的。只有当我得到那个例外

  1. 打开一个应用程序,密钥由 mKeyGenerator.generateKey() 创建;
  2. 确认指纹
  3. 最小化应用程序
  4. 打开设置并添加新指纹
  5. 返回应用程序并尝试再次进行身份验证,抛出新的 KeyPermanentlyInvalidatedException

但是,如果将第 3 点替换为“退出应用程序”并且我按照后续步骤进行操作,则不会抛出异常,原因很简单,即重新创建了密钥。我的问题是如何检测是否在 2 个不同的运行时之间添加/删除了新指纹?

请帮我解决这个问题。

4

1 回答 1

0

在应用程序启动时,您必须检查您的密钥库是否包含以前创建的密钥

 private var keyStore: KeyStore = KeyStore.getInstance("AndroidKeyStore")
 private var cipher = Cipher.getInstance(...)

    init {
        try {
            keyStore.load(null)

            val key = keyStore.getKey(DEFAULT_KEY_NAME, null)

            if (key == null) {
                generateKey()
            }
        } catch (e: Throwable) {
            Timber.e(e)
        }
    }
于 2019-07-22T10:10:57.050 回答