Manifest.xml
<receiver
android:name=".device"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin" />
<intent-filter>
<action
android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
权限文件
<?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>
mainAcitvity.java
package t.t;
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 {
DevicePolicyManager devicePolicyManager;
ComponentName componentName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(mainActivity.this, device.class);
}
// 激活程序
public void btnjihuo(View v) {
if(!devicePolicyManager.isAdminActive(componentName)) {
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "提示文字");
startActivityForResult(intent, 1);
}
}
// 移除程序 如果不移除程序 APP无法被卸载
public void btnxiezai(View v) {
devicePolicyManager.removeActiveAdmin(componentName);
}
// 设置解锁方式 不需要激活就可以运行
public void btnszmm(View v) {
Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
startActivity(intent);
}
// 设置解锁方式
public void btnmm(View v) {
// PASSWORD_QUALITY_ALPHABETIC
// 用户输入的密码必须要有字母(或者其他字符)。
// PASSWORD_QUALITY_ALPHANUMERIC
// 用户输入的密码必须要有字母和数字。
// PASSWORD_QUALITY_NUMERIC
// 用户输入的密码必须要有数字
// PASSWORD_QUALITY_SOMETHING
// 由设计人员决定的。
// PASSWORD_QUALITY_UNSPECIFIED
// 对密码没有要求。
Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
devicePolicyManager.setPasswordQuality(componentName,
DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
startActivity(intent);
}
// 立刻锁屏
public void btnlock(View v) {
devicePolicyManager.lockNow();
}
// 设置5秒后锁屏
public void btnlocktime(View v) {
devicePolicyManager.setMaximumTimeToLock(componentName, 5000);
}
// 恢复出厂设置
public void btnwipe(View v) {
devicePolicyManager.wipeData(0);
}
// 设置密码锁
public void btnl(View v) {
devicePolicyManager.resetPassword("asdf",
DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
devicePolicyManager.lockNow();
}
}
device.java
package t.t;
import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
/**
* @author yubin
* @version 2012-9-27 上午09:25:21
**/
public class device extends DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
// 设备管理:可用
}
@Override
public void onDisabled(Context context, Intent intent) {
// 设备管理:不可用
}
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
return "这是一个可选的消息,警告有关禁止用户的请求";
}
@Override
public void onPasswordChanged(Context context, Intent intent) {
// 设备管理:密码己经改变
}
@Override
public void onPasswordFailed(Context context, Intent intent) {
// 设备管理:改变密码失败
}
@Override
public void onPasswordSucceeded(Context context, Intent intent) {
// 设备管理:改变密码成功
}
}