我配置并激活了密码策略admin,要求密码具有最小长度并且还要具有数值。
在单独的代码块中,我使用DevicePolicyManager.getPasswordQuality检查deivce上的密码质量。
但是,当我将null传递给方法时,无论密码质量由活动策略管理员配置/管理,我都会获得0(未指定)的密码质量。
另一方面,如果我明确地将设备策略admin作为组件名称传递给方法调用,我将获得正确的密码质量值。
这对我来说是不够的,因为如果有多个设备管理员处于活动/安装状态,我需要能够获得聚合密码质量,这可以通过根据api文档将null传递给方法来实现。
这里有任何指示都会有很大的帮助。
请注意,我使用的是14级(4.0.4),这是在模拟器上。
以下是有效和无效的代码片段:
DevicePolicyManager dpm = (DevicePolicyManager)service.getSystemService(Context.DEVICE_POLICY_SERVICE);
List<ComponentName> list = dpm.getActiveAdmins();
ComponentName admin = null;
String strValue = null;
strValue = String.valueOf(dpm.getPasswordQuality(admin));
//strValue has 0 value indicating password quality as unspecified
//although there is one active policy requiring number type password
DevicePolicyManager dpm = (DevicePolicyManager)service.getSystemService(Context.DEVICE_POLICY_SERVICE);
List<ComponentName> list = dpm.getActiveAdmins();
ComponentName admin = list.get(0);
String strValue = null;
strValue = String.valueOf(dpm.getPasswordQuality(admin));
//strValue contains 131072 indicating numberic type password
// which is what my policy sets[corresponding to component list.get(0)].
此致 迪帕克