在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),它似乎提供了禁用功能而不是启用功能。
谢谢!
答案 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权限,那么今天似乎没有更好的解决方案。