Android中的设备密码是否存在

时间:2011-07-05 21:16:21

标签: android device-admin

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

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

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

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

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

不允许应用程序开发人员找到它吗?

是否有系统级方法?

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

提前致谢

4 个答案:

答案 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());

结论:

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

  2. 检查密码是否足够

  3. 如果没有使用resetPassword()

  4. 设置密码
  5. 调用lockNow()

答案 3 :(得分:0)

可能你已经找到了解决方案。但是我在这里发布这个以供将来参考。

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

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