首页 > 解决方案 > 无法对服务中附加的覆盖窗口使用指纹身份验证

问题描述

我的应用程序中有显示覆盖屏幕的功能,我想在该视图中添加指纹,我尝试添加但低于错误,

/system_process W/FingerprintService: Rejecting com.package.myapp ; not in foreground
01576-1576/system_process V/FingerprintService: authenticate(): reject com.package.myapp

但是,如果我将它集成到活动中,它就可以正常工作。

如何在服务的叠加层上添加指纹身份验证?

请为此提供解决方案

标签: androidserviceoverlayfingerprintandroid-fingerprint-api

解决方案


如果您查看 FingerPrintService 的源代码,会看到,当您调用FingerprintManager#authenticate时,它​​会调用 #canUseFingerprint,这要求您在前台 Activity 中运行它。因此,使用 FingerprintManager 将需要让您的覆盖屏幕获取启动覆盖的 Activity 引用,或者启动运行指纹传感器的 Activity。

另请注意, FingerprintManager 已被弃用并被BiometricPrompt取代。这是一篇很有帮助的Medium文章,它将引导您完成 BiometricPrompt 的实现。但是,请注意,它也需要一个 Activity 上下文来确定 Activity 何时进入后台,然后生物识别提示会自动消失。


推荐阅读