以前,FingerprintManager 可用于处理指纹身份验证,并且不依赖于 Activity 来完成系统对话框。 它可以在任何地方使用,就像任何传感器管理器一样。
现在,Google已经发布了支持库版本https://developer.android.com/reference/androidx/biometrics/BiometricPrompt 并弃用了 FingerprintManager。 他们希望所有应用程序都通过相同的统一系统对话框。
大问题是 - 整个事情与 FragmentActivity 强耦合。
我希望在 AccessibilityService 中使用此指纹身份验证(在其他应用程序上显示)。
可以做什么?
我正在考虑的一些选择:
- 尽管已弃用,但还是回到旧的 FingerprintManager。
- 实现一些透明的 Activity,以某种方式在其他应用上方弹出,以满足 API 对 FragmentActivity 的要求。
更新
接受了下面commonsware的回答。 当获取辅助功能事件时,我能够在应用程序顶部成功启动 Activity ,并开始使用 BiometricPrompt。不过,BiometricPrompt 还有其他问题,而且它似乎是一个非常不成熟的 API,从未经过压力测试 - 但这超出了这个问题的范围。
最佳答案
Go back to the old FingerprintManager despite becoming deprecated
这可能不适用于较新的设备。我怀疑它在生物识别安全不是指纹的设备上也无法正常工作。
Implement some transparent Activity that will somehow pop up above other apps, just to satisfy the API's requirement for FragmentActivity.
如果我是你,我会走这条路。为此,请使用 Theme.Translucent.NoTitleBar
。
请注意,我不能保证这将在 AccessibilityService
中正常工作,并且显示任何形式的 UI 都会导致您需要过滤掉新的辅助功能事件。
关于android - 生物识别提示和辅助服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574218/