【问题标题】:BiometricPrompt and AccessibilityService生物识别提示和无障碍服务
【发布时间】:2018-12-22 20:27:25
【问题描述】:

以前,FingerprintManager 可用于处理指纹身份验证,并且不依赖 Activity 来通过系统对话框。 它可以在任何地方使用,就像任何传感器管理器一样。

现在,谷歌已经在https://developer.android.com/reference/androidx/biometrics/BiometricPrompt发布了支持库版本 和弃用的指纹管理器。 他们希望所有应用程序都通过同一个统一的系统对话框。

大问题是 - 整个事情都与 FragmentActivity 紧密耦合。

我希望在 AccessibilityService 中使用此指纹验证(显示在其他应用上)。

可以做什么?

我正在考虑的一些选项:

  1. 尽管已弃用,但仍可返回旧的 FingerprintManager。
  2. 实现一些透明的 Activity,它会以某种方式弹出到其他应用之上,只是为了满足 API 对 FragmentActivity 的要求。

更新

在下面接受了 commonsware 的回答。 获得可访问性事件时,我能够在应用程序之上成功启动 Activity,并开始使用 BiometricPrompt。不过,BiometricPrompt 还有其他问题,它似乎是一个非常不成熟的 API,从未经过压力测试——但这超出了本问题的范围。

【问题讨论】:

    标签: android accessibilityservice android-fingerprint-api accessibility accessibility-api


    【解决方案1】:

    回到旧的 FingerprintManager 尽管已被弃用

    这可能不适用于较新的设备。我怀疑它在生物识别安全性不是指纹的设备上也无法正常工作。

    实现一些透明的 Activity,它会以某种方式弹出在其他应用之上,只是为了满足 API 对 FragmentActivity 的要求。

    如果我在你的鞋子里,我会走这条路。为此使用Theme.Translucent.NoTitleBar

    请注意,我不能保证这将在 AccessibilityService 中起作用,并且显示任何形式的 UI 都会导致您需要过滤掉新的可访问性事件。

    【讨论】:

    • 感谢您这么快的回复。如果这确实是一个好的答案,我将继续使用第二种方法并更新。
    • 关于“这可能不适用于较新的设备。” - 一个例子是具有屏幕指纹传感器的华为 Mate P20 Pro。当您通过FingerprintManager API 启动指纹认证时,会显示华为的全屏认证 UI(它是透明的,但会严重模糊其背后的任何内容)。该 UI 包含对用户的一些通用说明,但没有关于哪个应用程序触发了身份验证的信息。如果您使用BiometricPrompt,您将获得相同的全屏 UI,但您至少可以设置标题、副标题和描述文本。
    • 接受了答案。获得可访问性事件时,我能够在应用程序之上成功启动 Activity,并开始使用 BiometricPrompt。不过,BiometricPrompt 还有其他问题,而且它似乎是一个非常不成熟的 API,从未经过压力测试——但这超出了这个问题的范围。
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多