清单文件加入一个广播接收器
<receiver android:name=".receiver.LockScreenReceiver"> <meta-data android:name="android.app.device_admin" android:resource="@xml/lock_screen" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" /> </intent-filter> </receiver>
上面名为lock_screen的xml的引用需要在xml文件夹下建一个文件,里面内容为
<?xml version="1.0" encoding="utf-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <force-lock/> </uses-policies> </device-admin>广播接收器内容public class LockScreenReceiver extends DeviceAdminReceiver { @Override public void onEnabled(Context context, Intent intent) { super.onEnabled(context, intent); ToastUtil.toastShort("已获得设备管理者权限"); } @Override public void onDisabled(Context context, Intent intent) { super.onDisabled(context, intent); ToastUtil.toastShort("取消了设备管理者权限"); } }然后开始处理activity中的内容首先初始化需要的对象使用startActivityForResult是为了改变下获取状态DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);ComponentName cn = new ComponentName(this, LockScreenReceiver.class);
通过dpm.isAdminActive(cn)方法判断是否获取设备管理者权限
以下方法用来获得设备管理者权限
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,cn); startActivityForResult(intent,1);@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(dpm.isAdminActive(cn))admin_station.setText("已获得权限"); else admin_station.setText("未获得权限");}取消管理员权限dpm.removeActiveAdmin(cn);