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



问题来了:

我试图创建一个设备管理应用程序,当用户试图禁用该应用程序的管理功能时,他被提示输入密码,如果他未能输入正确的密码,该应用程序保持管理员权限。

我见过一个叫AppLock的应用程序就是这么做的,而且效果很好!我已经尝试过从ondisablerrequested()方法中锁定屏幕,正如这个问题所建议的那样,但是管理应用程序无论如何都被禁用了。

我假设AppLock锁定屏幕与密码活动,当用户试图禁用应用程序作为管理员,但我不明白它如何能阻止应用程序被禁用一个错误的密码,因为应用程序已经在被禁用的过程中,当密码活动启动。如果密码不正确,在密码活动中是否有一个钩子来停止某些进程?

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

下面是一些与我的问题类似的问题:

  • 如何防止用户禁用我的设备管理应用程序,通过设置菜单?

  • 在Android中禁用应用程序前需要密码

  • Android问密码禁用应用程序从设备管理?

晚了几年,但我刚刚遇到了同样的问题,并能够解决它。也许OP不需要答案,但其他人——比如我——可能会在寻找解决方案时遇到这个问题。

请记住,此方法仅在用户无法解锁屏幕时有效。

你所需要做的就是在DeviceAdminReceiver的ondisablerrequested方法中锁定屏幕,这样用户就必须输入他们的密码才能解锁。当然,这只有在手机有某种形式的屏幕锁(pin,密码,指纹等)的情况下才有效。小心智能锁

请记住,这个方法旨在显示一个警告,解释为什么用户不应该禁用权限。如果返回null(来自super的默认值),则不显示任何内容,并且该权限将被禁用。因此,如果我们返回任何文本,将显示带有该文本的对话框以及ok和取消按钮。

如果你像这样把它和屏幕锁结合起来:

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

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

最新更新