介绍
注意:一旦一个应用开启了超级管理员权限,是不能直接在 设置—>应用程序里 进行删除的(删除失败)
如何删除该程序?
必须要在 设置—>位置和安全—>选择设备管理器 里取消要删除应用的激活 然后再去应用程序里删除。
注意:不要在真机中测试锁屏和清理数据,我在三星Galaxy One5上点击了锁屏,结果就进不去页面了,接触锁屏需要输入 pin码,(设置的是123,但输入不起作用,在模拟器中输入123可以。)后来同时按 音量+键+home+电源键,恢复到出厂状态。
权限介绍:
<limit-password/> <!-- 设置密码规则 -->
<watch-login/> <!-- 监视屏幕锁屏次数 -->
<reset-password/> <!-- 更改锁屏密码 -->
<force-lock/> <!-- 锁屏 -->
<wipe-data/> <!-- 远程删除数据 -->
<expire-password/> <!-- 锁屏密码保护期 -->
<encrypted-storage/> <!-- 设置存储相机加密 -->
<disable-camera/> <!-- 停用相机 -->
步骤
- 创建一个DeviceAdminReceiver子类(DeviceAdminReceiver是广播接收者的子类)
- 配置广播接收者清单文件
- 在res目录下创建xml文件夹,再此文件夹里创建xxx.xml
- 在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)—— 管理员权限