Android系统级服务:DevicePolicyManager

介绍

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

如何删除该程序?

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

注意:不要在真机中测试锁屏和清理数据,我在三星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)—— 管理员权限

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值