1、主程序代码:
- 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();
- // killMyself ,锁屏之后就立即kill掉我们的Activity,避免资源的浪费;
- android.os.Process.killProcess(android.os.Process.myPid());
- }
2、其中,mylock()为:
- private void mylock(){
- boolean active = policyManager.isAdminActive(componentName);
- if(!active){//若无权限
- activeManage();//去获得权限
- policyManager.lockNow();//并锁屏
- }
- if (active) {
- policyManager.lockNow();//直接锁屏
- }
- }
3、activeManage()代码为:
- private void activeManage() {
- // 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器
- Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
- //权限列表
- intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
- //描述(additional explanation)
- intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 其他描述 ------");
- startActivityForResult(intent, 0);
- }
4、AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="cn.hnu"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".LockFirst"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <!-- 设备管理 -->
- <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>
- </application>
- </manifest>
5、其中lock_screen.xml(lock_screen.xml文件放在res/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>