我正在使用安卓提供的androidx设置library,在将生物特征添加到我的其中一个设置时遇到了问题。我也在使用androidx生物识别library。android处理生物识别结果的方式是通过回调。这是有问题的,因为我尝试添加生物识别的方式是通过覆盖fun onPreferenceTreeClick(preference: Preference?): Boolean。如果我在这里创建一个生物识别提示符,我无法阻止该选项被点击,因为当我的生物识别提示符被实例化时,android不会等待它完成,而是在其回调中处理它。如何将生物特征添加到我的设置中?(据我所知)没有可覆盖的方法允许这样做,也没有办法用生物识别库做到这一点。
发布于 2020-08-04 00:49:47
我最终解决了这个问题,最初拒绝了新的更改,并保存了该值,以便稍后在用户通过生物识别时使用。如果用户失败,则不需要执行任何操作,因为我最初拒绝了更改。但是,如果用户传递了回调,我就会进行更改。尽管这似乎是SwitchPreference的唯一合乎逻辑的选择,但在执行ListPreference时,这一点并不明显。
在我的特定实现中,我添加了一个onPreferenceChangeListener
findPreference<Preference>(BIOMETRIC_OPTION_KEY)?.setOnPreferenceChangeListener { preference, newValue ->
if (newValue is String) {
performBiometricFlow(preference.key, newValue)
}
false
}performBiometricFlow调用了生物识别对话框library,在回调中,我运行了一个函数,该函数确定正在单击的内容(基于键),并运行适当的函数。在本例中,单击了一个生物识别选项对话框,如果该对话框通过,它将运行以下命令
private fun changeBiometricPreference(newValue: String) {
findPreference<ListPreference>(BIOMETRIC_OPTION_KEY)?.value = newValue
}此部分通过查找ListPreference并重新分配它来保存最初应保存的newValue。
https://stackoverflow.com/questions/63231425
复制相似问题