1.首先创建类AdminReceiver继承DeviceAdminReceiver
该方式可以什么都不写~
2.在AndroidManifest.xml中注册
<!-- 设备管理 -->
<receiver android:name=".AdminReceiver"
android:label="@string/app_name"
android:description="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/lock_screen" />
<intent-filter>
<action
android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
3.在res文件中创建xml文件,再创建device_admin.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<device-admin
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<force-lock />
<!-- 清除所有数据(恢复出厂设置) -->
<wipe-data />
<reset-password />
<limit-password />
<watch-login />
</uses-policies>
</device-admin>
4.在我们的主程序中
private DevicePolicyManager policyManager;
private ComponentName componentName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.locklayout);
//获取设备管理服务
policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
//AdminReceiver 继承自 DeviceAdminReceiver
componentName = new ComponentName(this, AdminReceiver.class);
mylock();
// 锁屏之后就立即kill掉Activity,避免资源的浪费;
android.os.Process.killProcess(android.os.Process.myPid());
}
private void mylock(){
boolean active = policyManager.isAdminActive(componentName);
if(!active){//是否具有权限
activeManage();
policyManager.lockNow();//锁屏
}
if (active) {
policyManager.lockNow();//锁屏
}
}
private void activeManage() {
// 启动设备管理
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
//权限列表
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
//描述(additional explanation) intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "超级NB的设备管理器!!!");
startActivityForResult(intent, 0);
}
5.对于小白关于删除一键锁屏的问题
先进入设置-安全-设备管理器里面取消激活一键锁屏
然后就可以删除了
6.对于锁屏后启动需要输入密码可在在锁屏代码之前添加
policyManager.resetPassword("123456",0);//启动密码是123456