Android - 受密码保护的设备管理员禁用

时间:2014-07-22 19:15:56

标签: android passwords password-protection device-admin screen-lock

所以这就是问题:

我正在尝试创建一个设备管理应用,当用户尝试禁用该应用的管理功能时,系统会提示他输入密码,如果他输入的密码不正确,该应用会保留管理员权限。

我见过一个名为AppLock的应用就是这样做的,效果很好!我已尝试按照this SO question中的建议从onDisableRequested()方法锁定屏幕,但管理员应用仍被禁用。

我假设当用户尝试以管理员身份禁用应用时,AppLock会使用密码活动锁定屏幕,但我不明白如何阻止应用在错误的密码上被禁用,因为该应用是在密码活动启动时已经处于禁用状态。如果密码不正确,密码活动中是否有挂钩来暂停某些进程?

我也对如何实现AppLock正在使用的自定义密码锁定屏幕感到困惑。如何使用自定义密码锁定屏幕暂时更改锁定屏幕类型,然后恢复为用户的原始锁定屏幕类型?

这些是其他一些与我的问题类似的问题:

1 个答案:

答案 0 :(得分:0)

迟了几年,但我遇到了同样的问题并且能够解决它。也许OP不需要答案,但其他人 - 比如我 - 可能会在寻找解决方案时偶然发现。

请注意,此方法仅在用户无法解锁屏幕时才有效。

您需要做的就是在DeviceAdminReceiver的onDisableRequested方法中锁定屏幕,以便用户输入密码进行解锁。当然,这仅在手机具有某种形式的屏幕锁定(针脚,密码,指纹......)时才有效。警惕智能锁。

请记住,此方法旨在显示警告,说明用户不应禁用权限的原因。 如果返回null(默认值为super),则不会显示任何内容,并且无论如何都会禁用该权限。因此,如果我们返回任何文本,则会显示包含该文本以及ok和取消按钮的对话框显示。

如果您将其与屏幕锁定结合使用,如下所示:

public CharSequence onDisableRequested(Context context, Intent intent) {
    DevicePolicyManager deviceManger = (DevicePolicyManager)context.getSystemService(
            Context.DEVICE_POLICY_SERVICE);
    deviceManger.lockNow();
    return "Your warning";
}

当用户尝试禁用该权限时,屏幕将关闭,当他们解锁屏幕时,他们需要输入密码。一旦他们这样做,他们会看到一个带有“你的警告”,一个取消按钮和一个确定按钮的对话框。只有当他们按下确定时才会禁用该权限。