在开发设备管理器之前应该先了解一下什么是设备管理器,他的作用是什么。这里附上Android设备管理器的官方介绍, Device Administration
开发步骤
首先要在AndroidManifest.xml
中添加下面的权限声明
<receiver android:name=".receiver.MainDeviceAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin" android:resource="@xml/devicepolicymanager_permission" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
其中引用了一个@xml/devicepolicymanager_permission
,他的内容为
<?xml version="1.0" encoding="UTF-8"?>
<device-admin>
<uses-policies>
<force-lock/>
<wipe-data/>
<reset-password/>
<limit-password/>
<watch-login/>
</uses-policies>
</device-admin>
同样AndroidManifest.xml
的声明中有一个.receiver.MainDeviceAdminReceiver
, 这个是一个继承于android.app.admin.DeviceAdminReceiver
的因,同样要重新这个类。这里同样给出DeviceAdminReceiver的所有方法列表。
申请权限操作
在你的Activity的代码中填写下面这样的代码,用来申请设备管理器界面
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, new ComponentName(activity, MainDeviceAdminReceiver.class));
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "我需要这样的权限");
activity.startActivityForResult(intent, REQUEST_DEVICE_ADMIN_CODE);
这时手机中会出现这样的界面提示:

当用户点击ACTIVATE
会触发MainDeviceAdminReceiver
中的onEnabled
方法。同时在Activity的onActivityResult
也会收到结果,这里给出我的检测代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PhoneUtil.REQUEST_DEVICE_ADMIN_CODE) {
if (resultCode != Activity.RESULT_OK) {
// TODO: 用户确定授权
} else {
// TODO: 用户没有授权设备管理器
}
}
}
其他说明
当设备管理器一旦激活,软件就不能正常卸载,这里是不能卸载的界面