http://www.cnblogs.com/androidez/archive/2013/02/17/2915020.html
http://hxdawxyhxdawxy.iteye.com/blog/1651089
1.创建 MyAdmin 的广播接受者 继承 DeviceAdminReceiver
package com.example.lockscreen;
import android.app.admin.DeviceAdminReceiver;
public class MyAdmin extends DeviceAdminReceiver {
}
2.清单文件AndroidMenifest.xml中的配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lockscreen"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.lockscreen.MainActivity"
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=".MyAdmin" >
<meta-data android:name="android.app.device_admin"
android:resource="@xml/my_admin"/>
<intent-filter >
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>
</application>
</manifest>
3.在res文件建立xml/my_admin.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<!--
limit-password 设置密码的规则
watch-login 监控屏幕解锁尝试次数
reset-password 更改屏幕解锁密码
force-lock 设备自动锁屏
wipe-data 删除全部的数据
-->
<uses-policies>
<limit-password/>
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
</uses-policies>
</device-admin>
4.MainActivity代码
package com.example.lockscreen;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v){
// 设备安全管理服务 2.2之前的版本是没有对外暴露的 只能通过反射技术获取
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
// 申请权限
ComponentName componentName = new ComponentName(this, MyAdmin.class);
// 判断该组件是否有系统管理员的权限
boolean isAdminActive = devicePolicyManager.isAdminActive(componentName);
if(isAdminActive){
devicePolicyManager.lockNow(); // 锁屏
devicePolicyManager.resetPassword("123", 0); // 设置锁屏密码
// devicePolicyManager.wipeData(0); 恢复出厂设置 (建议大家不要在真机上测试) 模拟器不支持该操作
} else {
Intent intent = new Intent();
// 指定动作名称
intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
// 指定给哪个组件授权
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
startActivity(intent);
}
}
}