【问题标题】:DevicePolicyManager resetPassword not working some timesDevicePolicyManager resetPassword 有时不起作用
【发布时间】:2014-09-17 19:12:42
【问题描述】:

所有, 我有一个非常奇怪的问题。 我有以下代码可以根据特定条件启用和禁用 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); 未能执行。我试图捕捉一个异常,但它没有帮助。

此时我不知道为什么该方法在重新启动后停止工作。我检查了设备管理员,启用/禁用了几次应用程序都没有成功。

我也不确定这是否相关,但让我这么说吧。设备管理员屏幕始终选中我的应用程序,即使在我取消选中该应用程序并将其停用后,应用程序名称也已选中该框。

提前感谢您的任何回复。

【问题讨论】:

  • 你的手机已经root了吧?你申请的是AndroidL吗?
  • 是的,手机已经植根,我使用自定义 ROM,android 革命与 4.4.3。我在 Eclipse 中使用 Android 4.0 ICS。

标签: android device-policy-manager


【解决方案1】:

你说你已经“检查了设备管理员”,但你没有说你在那里看到了什么。设备上是否还有其他活动的设备管理员?如果您提供的密码不符合所有设备管理员设置的密码策略集合,DevicePolicyManager.resetPassword() 将返回 false。听起来可能另一个设备管理员仍然处于活动状态。

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

设备管理员屏幕始终选中我的应用,即使在我取消选中该应用并将其停用后,应用名称也已选中该框。

这是设备管理员屏幕的一个常见错误:即使您已成功禁用管理员,该复选框也经常保持打开状态。尝试退出设备管理员屏幕,然后重新进入。现在应该取消选中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2021-04-12
    相关资源
    最近更新 更多