0

当我的应用程序启动时,我想知道屏幕锁定密码是否已经存在。

案例1:如果已经有屏幕锁定密码......我会使用设备管理器进行锁定(locknow())并要求用户再次登录。

案例 2:如果没有屏幕锁定密码....我会要求用户使用 devicepolicymanager 类设置密码。

但我不知道如何检查屏幕锁定密码是否已经存在。设备管理器 api 中是否有任何布尔返回方法?...我无法使用任何这样的方法

我能够知道是否存在活动管理员......现在,有人可以告诉我如何知道屏幕锁定密码是否已经存在......

不允许应用程序开发人员找到安全的东西吗?

有系统级的方法吗?

设备策略管理器可以帮助我获取该信息吗?

提前致谢

4

4 回答 4

3
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( keyguardManager.isKeyguardSecure()) {
   //it is password protected
} else {
   //it is not password protected 
}

API Level 16 中引入了方法isKeyguardSecure()

于 2013-09-10T10:17:58.797 回答
0

看这里如何显示屏幕被锁定?. 这件事在那里得到了广泛的讨论和解决

于 2011-07-06T04:31:53.153 回答
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());

结论:

  1. 使用 setPasswordMinimumLength(..., 1)

  2. 检查密码是否足够

  3. 如果没有使用 resetPassword() 设置密码

  4. 调用 lockNow()

于 2012-04-20T11:10:31.540 回答
0

可能您已经找到了解决方案。但是,我在这里发布此内容以供将来参考。

您可以使用 DevicePolicyManager 中的 isActivePasswordSufficient() 方法来检查密码的当前状态以及可用性。

有关详细信息,请参阅http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isActivePasswordSufficient%28%29

于 2016-01-13T09:25:36.050 回答