Android系统级服务:DevicePolicyManager

来源:互联网 发布:中科大软件学院信息化 编辑:程序博客网 时间:2024/06/06 03:26

介绍

注意:一旦一个应用开启了超级管理员权限,是不能直接在 设置—>应用程序里 进行删除的(删除失败)

如何删除该程序?

必须要在 设置—>位置和安全—>选择设备管理器 里取消要删除应用的激活 然后再去应用程序里删除。

注意:不要在真机中测试锁屏和清理数据,我在三星Galaxy One5上点击了锁屏,结果就进不去页面了,接触锁屏需要输入 pin码,(设置的是123,但输入不起作用,在模拟器中输入123可以。)后来同时按 音量+键+home+电源键,恢复到出厂状态。

权限介绍:

<limit-password/>     <!-- 设置密码规则 --><watch-login/>        <!-- 监视屏幕锁屏次数 --><reset-password/>     <!-- 更改锁屏密码 --><force-lock/>         <!-- 锁屏 --><wipe-data/>          <!-- 远程删除数据 --><expire-password/>    <!-- 锁屏密码保护期 --><encrypted-storage/>  <!-- 设置存储相机加密 --><disable-camera/>     <!-- 停用相机 -->

步骤

  1. 创建一个DeviceAdminReceiver子类(DeviceAdminReceiver是广播接收者的子类)
  2. 配置广播接收者清单文件
  3. 在res目录下创建xml文件夹,再此文件夹里创建xxx.xml
  4. 在Activity里调用

Step1:创建DeviceAdminReceiver

public class MyDeviceAdminReceiver extends DeviceAdminReceiver {}

Step2:配置广播接收者清单文件

name是我们创建的MyDeviceAdminReceiver@xml/device_admin,使我们在res/xml/下创建的xml文件

<receiver    android:name=".MyDeviceAdminReceiver"    android:description="@string/device_admin_description"    android:label="@string/device_admin"    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>

Step3:在res目录下创建xml文件夹,再此文件夹里创建xxx.xml

<?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/><!-- 远程删除数据 -->        <expire-password/><!-- 锁屏密码保护期 -->        <encrypted-storage/><!-- 设置存储相机加密 -->        <disable-camera/><!-- 停用相机 -->    </uses-policies></device-admin>

Step4:在Activity里调用

获取管理类

DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);

创建组件

ComponentName componentName = new ComponentName(context, MyDeviceAdminReceiver.class);

判断有没有激活?
true:已经激活,false:没有激活

dpm.isAdminActive(componentName)

打开激活界面

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Admin");startActivity(intent);

这里写图片描述
取消激活

dpm.removeActiveAdmin(componentName);

锁屏

dpm.resetPassword("123", DevicePolicyManager.FLAG_MANAGED_CAN_ACCESS_PARENT);dpm.lockNow();

这里写图片描述 这里写图片描述
清除数据

dpm.wipeData(0);//dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//清除SD卡数据//dpm.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA);//清除保护数据

这里写图片描述

其它

Demo:https://git.oschina.net/AndroidBaseDemo/DeviceAnimReceiver01.git
参考:
Android项目:手机安全卫士(8)—— 管理员权限

原创粉丝点击