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


<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);

Android系统级服务:DevicePolicyManager_第1张图片
取消激活

dpm.removeActiveAdmin(componentName);

锁屏

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

Android系统级服务:DevicePolicyManager_第2张图片 Android系统级服务:DevicePolicyManager_第3张图片
清除数据

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

Android系统级服务:DevicePolicyManager_第4张图片

其它

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

你可能感兴趣的:(Android系统级服务:DevicePolicyManager)