设备管理员 DevicePolicyManager
它是可管理和操作设备的一个API,使用这个API你可以接管手机的应用权限,对手机做出很多操作,比如锁屏、恢复出厂设置、设置密码、强制清除密码,修改密码、设置屏幕灯光渐暗时间间隔等操作。
创建对象并初始化
DevicePolicyManager dpm;
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
超级管理员使用之前 必须激活
1.定义类继承DeviceAdminReceiver类 此类是一个广播接收者
public class Manager extends DeviceAdminReceiver{}
2.Manager类 为一个广播接收者 则必须在清单文件中声明
<receiver
android:name=".receiver.Manager"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_sample" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
meta-data中的android:resource="@xml/device_admin_sample" 要在res\xml下建立device_admin_sample.xml
文件内容
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies> 用什么样的安全策略
<limit-password /> 限制密码最小长度
<watch-login /> 监视用户登陆次数
<reset-password /> 设置密码
<force-lock /> 强制锁屏
<wipe-data /> 清楚数据
</uses-policies>
</device-admin>
3、激活管理员
//activeDeviceAdmin 任意方法名 跟布局文件匹配
public void activeDeviceAdmin(View view){
//声明一个意图,作用是开启设备管理员;
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
//指定要开启的组件;
ComponentName mDeviceAdminSample = new ComponentName(this, MyAdmin.class);
//我们搞个信息,引诱用户来激活;
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"提示信息");
startActivity(intent);
}
4.移除管理员:
//获得设备管理员的对象
DevicePolicyManager dm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
//声明一个意图 移除管理员
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
//指定要开启的组件
ComponentName mDeviceAdminSample = new ComponentName(this,MyAdmin.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
// 移除管理员权限。
dm.removeActiveAdmin(mDeviceAdminSample);
激活之后可以做的事情
1擦除数据: 清除数据相当于恢复出厂设置。 sd卡东西还在。
DevicePolicyManager dm =(DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
dm.wipeData(0);
2.锁屏并设置解锁密码:
DevicePolicyManager dm=(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
dm.resetPassword("321", 0); //设置密码
dm.lockNow(); //强制锁屏
可以此操作 放在activity中的oncreate方法内 不设置布局文件 直接点击图标 就可以一键锁屏
一键锁屏
设置两个activity 一个用于激活设备管理员 另一个用于点击图标 进行强制锁屏
清单文件中的内容和住界面一样