在 Android 6.0 中使用 lockNow 后如何保留指纹解锁?

How to retain fingerprint unlock after using lockNow in Android 6.0?

Android6.0中使用DevicePolicyManager进行lockNow()后,如何保持无缝指纹解锁效果?

假设在配备指纹扫描仪的设备上调用 lockNow() 的应用程序具有“USES_POLICY_FORCE_LOCK”并且已被授予设备管理员身份。

这是 lockNow() 函数的文档:

public void lockNow ()

Make the device lock immediately, as if the lock screen timeout has expired at the point of this call.

The calling device admin must have requested USES_POLICY_FORCE_LOCK to be able to call this method; if it has not, a security exception will be thrown.

获得设备管理员身份并执行锁定就好了。为了便于参考,请参阅 this SO question 了解我使用的方法。

问题是phone锁后,指纹扫描仪不再顺利解锁phone。相反,指纹扫描仪会提示我输入后备 PIN 码。 在 Android 6.0 中,我是否需要做一些新的事情才能在执行 lockNow() 调用后保留指纹解锁效果?

我查看了所有 DevicePolicyManager 标志 (in the documentation),它似乎提供禁用功能而不是启用功能。

谢谢!

如本 link 所述:https://code.google.com/p/android/issues/detail?id=79735,这似乎是智能锁的问题,而不仅仅是 google 印记(指纹扫描仪)。

如果您可以依赖 root 权限,您可能可以使用:PowerManager.goToSleep(0);

没有 root 权限,到今天为止似乎没有更好的解决方案。

看起来 Google 已将其标记为按预期工作但没有任何适当的解释。

https://code.google.com/p/android/issues/detail?id=79735#c110

还有这里 https://code.google.com/p/android/issues/detail?id=191955#c23

所以我们目前无法在保持智能锁工作的同时以编程方式锁定屏幕。他们还说"developers are using it incorrectly"。不知道他们是在开玩笑还是认真的。

编辑:这里有一些不令人满意的解释https://code.google.com/p/android/issues/detail?id=79735#c115