DevicePolicyManager resetPassword无法正常工作

时间:2014-09-17 19:12:43

标签: android device-policy-manager

全部, 我有一个非常奇怪的问题。 我有以下代码,可根据特定条件启用和禁用PIN

DevicePolicyManager mDPM;
ComponentName mDeviceAdminSample;
mDPM = (DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(context, DeviceAdminSampleReceiver.class);

public void disablePINLock(DBHelper myDBHelper, Context context) {

    mDPM.setPasswordQuality(mDeviceAdminSample,
            DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
    mDPM.setPasswordMinimumLength(mDeviceAdminSample, 0);
    boolean result = false;
    result = mDPM.resetPassword("", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);

    if (result) {
        // Toast: "Successfully Disabled PIN lock"
    }
    else {
        // Toast: "Could not disable PIN lock"
    }
}

public void enablePINLock(DBHelper myDBHelper, Context context) {
    mDPM.setPasswordQuality(mDeviceAdminSample,
            DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
    mDPM.setPasswordMinimumLength(mDeviceAdminSample, 4);

    Cursor c = myDBHelper.getSetting("'random'");
    if (c != null) {
        boolean result = mDPM.resetPassword("1234",
                DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
        if (result) {
            // Toast: "Successfully Enabled PIN lock"
        }
        else {
            // Toast: "Could not enable PIN lock"
        }
    }
    else {
        // Toast: "Could not enable PIN lock"
        c.close();
    }
}

代码工作正常,直到几天前。我重新启动手机以完成更新,从那时起disablePINLock功能无法正常工作。当函数执行时,我得到的是 "导致"是假和吐司消息"无法禁用PIN"。 enablePINLock方法工作正常,并且一直运行良好。

由于重启result = mDPM.resetPassword("", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);未能执行。我试图抓住一个例外,但它没有帮助。

此时我对重启后方法停止工作的原因一无所知。我检查了设备管理员,启用/禁用了应用程序几次但没有成功。

此外,我不确定这是否相关,但请允许我这样说。设备管理员屏幕始终检查我的应用程序,即使在取消选中应用程序并取消激活后,应用程序名称也会选中此框。

提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

您说您已经检查了设备管理员"但你不能说你在那里看到的。设备上是否还有其他活动设备管理员?如果您提供的密码不符合所有设备管理员设置的密码策略汇总,DevicePolicyManager.resetPassword()将返回false。听起来好像另一个设备管理员仍然活跃。

另外,关于你的最后一点:

  

设备管理员界面始终会检查我的应用,即使我取消选中该应用并取消激活后,应用名称也会选中此框。

这是设备管理员屏幕上的一个常见错误:即使您已成功停用管理员,该复选框也会保持不变。尝试退出设备管理员屏幕,然后返回。现在应该取消选中。