Search code examples
androiddevice-admin

Disable device admin programatically in android


In my application I have option (checkbox) to enable/disable device admin programatically, it works when I have admin disabled and try to enable it, but when I disable it, what it does is, disables the device admin without prompting for deactivation window to ask for deactivation. Now what I need is to do it the right way, I want application to show proper screen asking for deactivate device admin. I have following code snippet taken from android developer site,

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked) {
        // Activate device administration
        Intent intent = new Intent(
                DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdmin);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "Activate service to get access");
        startActivityForResult(intent, ACTIVATION_REQUEST);
    } else {
        try {
            devicePolicyManager.removeActiveAdmin(deviceAdmin);
            isAdminActive = false;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Solution

  • This is not possible AFIK. This is right of user.

    API will always show a dialog for confirmation about DE-activation of Device Admin

    Although EDM APIs gives a way where you can do silent DE-activation of Device administrator. So user can not see the UI of deactivation of particular Device admin. But EDM APIs are not easily available, they are for commercial uses.