2

我配置并激活了密码策略管理员,要求密码具有最小长度并具有数值。

在单独的代码块中,我使用 DevicePolicyManager.getPasswordQuality 来检查设备上的密码质量。

但是,当我将 null 传递给该方法时,无论活动策略管理员配置/管理的密码质量如何,我都会得到 0(未指定)的密码质量。

另一方面,如果我明确地将我的设备策略管理员作为组件名称传递给方法调用,我会得到正确的密码质量值。

这对我来说还不够,因为如果激活/安装了多个设备管理员,我需要能够获得聚合密码质量,这可以通过根据 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)].

问候, 迪帕克

4

0 回答 0