反射调用–setActiveAdmin
条件: app有系统签名权限
代码:
public static void setDeviceAdmin(boolean isActive){
ComponentName componentName=new ComponentName(GlobalDefine.context, DeviceAdminReceiver.class);
if (isActive){
if (GlobalDefine.devicePolicyManager.isAdminActive(componentName)){
return;
}
}
try {
@SuppressLint("PrivateApi")
Method setActiveAdmin = GlobalDefine.devicePolicyManager.getClass().getDeclaredMethod("setActiveAdmin", ComponentName.class, boolean.class);
setActiveAdmin.setAccessible(true);
setActiveAdmin.invoke(GlobalDefine.devicePolicyManager, componentName, isActive);
} catch (Exception e) {
e.printStackTrace();
}
}