我正在尝试知道当我的应用程序启动时是否已存在屏幕锁定密码。
案例1:如果已经有屏幕锁定密码...我会使用设备管理器进行锁定(locknow())并要求用户再次登录。
案例2:如果没有屏幕锁定密码....我会要求用户使用devicepolicymanager类设置密码。
但我无法知道,如何检查是否已存在屏幕锁定密码。在设备管理器api中是否有任何布尔返回方法?...我无法使用任何此类
我能够知道是否存在活跃的管理员....现在,有人可以告诉我如何知道屏幕锁定密码是否已经存在......
不允许应用程序开发人员找到它吗?
是否有系统级方法?
设备策略管理员可以帮助我获取该信息吗?
提前致谢
答案 0 :(得分:3)
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( keyguardManager.isKeyguardSecure()) {
//it is password protected
} else {
//it is not password protected
}
方法 isKeyguardSecure()在API Level 16中引入
答案 1 :(得分:0)
看这里How to reveal that screen is locked?。这个问题在那里得到了广泛的讨论和解决
答案 2 :(得分:0)
尝试以下方法:
dpm.setPasswordMinimumLength(new ComponentName(<package>, <class>), 0);
Log.d("Log", "Reset done: " + dpm.resetPassword("", 0)); // i.e. clear password
Log.d("Log", "Sufficient: " + dpm.isActivePasswordSufficient());
Log.d("Log", "Reset done: " + dpm.resetPassword("0000", 0));
Log.d("Log", "Sufficient: " + dpm.isActivePasswordSufficient());
// of device admin receiver
dpm.setPasswordMinimumLength(new ComponentName(<package>, <class>), 1);
Log.d("Log", "Reset done: " + dpm.resetPassword("", 0));
Log.d("Log", "Sufficient: " + dpm.isActivePasswordSufficient());
Log.d("Log", "Reset done: " + dpm.resetPassword("0000", 0));
Log.d("Log", "Sufficient: " + dpm.isActivePasswordSufficient());
结论:
使用setPasswordMinimumLength(...,1)
检查密码是否足够
如果没有使用resetPassword()
调用lockNow()
答案 3 :(得分:0)
可能你已经找到了解决方案。但是我在这里发布这个以供将来参考。
您可以在DevicePolicyManager中使用isActivePasswordSufficient()方法来检查密码的当前状态以及可用性。