首先是启动和关闭ActiveAdmin
启动ActiveAdmin
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"Additional text explaining why this needs to be added.");
startActivityForResult(intent, RESULT_ENABLE);
向Intent中设置DevicePolicyManager.EXTRA_DEVICE_ADMIN,本例设置了一个ComponentName
mDeviceAdminSample = new ComponentName(Controller.this, DeviceAdminSample.class);
设置EXTRA_ADD_EXPLANATION的文字会表示在权限确认画面上,如下图
删除ActiveAdmin
mDPM.removeActiveAdmin(mDeviceAdminSample);
设置密码相关配置。首先要确定当前activity是否已经启动了AdminActive模式
如果是的话,利用DevicePolicyManager的方法,设置密码配置
boolean active = mDPM.isAdminActive(mDeviceAdminSample);if (active) {mDPM.setPasswordQuality(mDeviceAdminSample, pwQuality);mDPM.setPasswordMinimumLength(mDeviceAdminSample, pwLength);mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, maxFailedPw);}
更改屏幕锁定password需要启动系统画面
Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
startActivity(intent);
Restpassword方法中,首先判定用户是否是管理员。
if (mAM.isUserAMonkey()) {// Don't trust monkeys to do the right thing!AlertDialog.Builder builder = new AlertDialog.Builder(Controller.this);builder.setMessage("You can't reset my password because you are a monkey!");builder.setPositiveButton("I admit defeat", null);builder.show();return;}
如果是,则重置密码
mDPM.resetPassword(mPassword.getText().toString(),DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);