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

时间:2015-11-11 23:56:13

标签: android fingerprint android-6.0-marshmallow device-admin

在Android 6.0中使用DevicePolicyManager执行lockNow()后,我们如何保留无缝指纹解锁效果?

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

这是lockNow()函数的文档:

  

public void lockNow()

     

立即锁定设备,就像锁定屏幕超时在此次呼叫时已过期一样。

     

呼叫设备管理员必须已请求USES_POLICY_FORCE_LOCK才能调用此方法;如果没有,则会抛出安全异常。

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

问题是手机锁定后,指纹扫描仪无法顺利解锁手机。相反,指纹扫描仪会提示我输入后备PIN码。在执行lockNow()调用后,为了保持指纹解锁效果,Android 6.0中是否还有新功能?

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

谢谢!

2 个答案:

答案 0 :(得分:3)

看起来Google已将其标记为“按预期工作”,但没有任何正确的解释。

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

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

因此,我们目前无法以编程方式锁定屏幕,同时保持智能锁定工作。他们还说"开发人员错误地使用它"。不确定他们是在开玩笑还是认真。

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

答案 1 :(得分:0)

正如此链接中提到的那样:https://code.google.com/p/android/issues/detail?id=79735,这似乎是智能锁定的问题,而不仅仅是谷歌版本说明(指纹扫描仪)。

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

如果没有root权限,那么今天似乎没有更好的解决方案。