Android 设备管理器 理解和使用
如何使用路由器管理界面进行设备管理 #生活技巧# #数码产品使用技巧# #网络设备设置教程#
DevicePolicyManager,设备策略管理器。顾名思义,DevicePolicyManager为Android系统的管理提供了一套策略,有三种方案
Device Administration, 设备管理员Profile Owner, 配置文件所有者Device Owner, 设备所有者三者的关系由浅入深提供设备管理的方法
Device Admin过用户授权自己的应用设备管理权限后,可以在代码中修改一些系统设置,需要在应用中配置一个xml,xml中声明相应的权限,这些权限基本代表了DeviceAdmin可以使用的能力
具体功能如下:
删除所有数据更改屏幕锁定设置密码规则监视屏幕解锁尝试次数锁定屏幕设置屏幕锁定密码的有效期设定存储设备加密停用相机 ProfileOwnerProfileOwner 译为配置文件所有者,在Android5.0系统推出。ProfileOwner涵盖了所有DeviceAdmin用户的管理能力。Google为了细化行业领域的管理而推出了这一组API,也被称为Android for work,旨在让用户在体验上可以轻松的兼顾生活和工作,可以将你的个人信息和工作信息等进行分类,随时查看
具体功能如下
隐藏应用,可停用制定应用并且不再界面显示,除非调用相应API恢复可用,否则该应用永远无法运行。可以用来开发应用黑白名单功能。
禁止卸载应用,被设置为禁止卸载的应用将成为受保护应用,无法被用户卸载,除非取消保护。
复用系统APP
修改系统设置
调节静音
修改用户图标
修改权限申请的策略
限制指定应用的某些功能
允许辅助服务
允许输入法服务
禁止截图
禁止蓝牙访问联系人
DeviceOwnerDeviceOwner, 设备所有者,Android5.0引入。同样的,DeviceOwner涵盖了所有DeviceAdmin用户的管理能力,是一类特殊的设备管理员,具有在设备上创建和移除辅助用户以及配置全局设置的额外能力。DeviceOwner完善了行业用户的**MDM(Mobile Device Manager)**行业管理能力,主要能力如下:
设置网络时间同步, 设置后无法从Settings取消用户管理, 创建用户、删除用户等管理账号系统清除锁屏设置Http代理禁止状态栏通知等待更新禁用相机隐藏应用禁止卸载应用复用系统APP获取wifi地址重启系统2. Demo演示Device Admin
激活设备管理器取消激活设备管理器设置解锁方式 不需要激活就可以运行设置解锁方式 需要激活设备管理器立即锁屏设置5秒后锁屏 充电状态下不管用清除数据 恢复出厂设置修改锁密码(PIN)禁用相机3. 开启设备管理器流程
编写广播接收器DeviceReceiver继承DeviceAdminReceiver
public class DeviceReceiver extends DeviceAdminReceiver { @Override public void onEnabled(Context context, Intent intent) { // 设备管理:可用 Toast.makeText(context, "设备管理:可用", Toast.LENGTH_SHORT).show(); } @Override public void onDisabled(final Context context, Intent intent) { // 设备管理:不可用 Toast.makeText(context, "设备管理:不可用", Toast.LENGTH_SHORT).show(); } }
java
运行
12345678910111213AndroidManifest注册广播接收器
<!--设备管理 begin --> <receiver android:name=".DeviceReceiver" 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" /> <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED" /> <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver> <!--设备管理 end -->
xml
12345678910111213141516xml下添加文件device_admin.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 /> <!--禁用相机--> <disable-camera /> <disable-keyguard-features /> <set-global-proxy /> <!-- 设置锁屏密码的有效期 --> <expire-password /> </uses-policies> </device-admin>
xml
12345678910111213141516171819202122232425激活设备管理器
// 激活设备管理器 public void enableDeviceManager() { //判断是否激活 如果没有就启动激活设备 if (!devicePolicyManager.isAdminActive(componentName)) { Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, mContext.getString(R.string.dm_extra_add_explanation)); mContext.startActivity(intent); } else { Toast.makeText(mContext, "设备已经激活,请勿重复激活", Toast.LENGTH_SHORT).show(); } }
java
运行
1234567891011121314移除设备管理器
// 取消激活设备管理器 public void disableDeviceManager() { devicePolicyManager.removeActiveAdmin(componentName); }
java
运行
123454. 设置锁屏策略
PASSWORD_QUALITY_ALPHABETIC // 用户输入的密码必须要有字母(或者其他字符)\n PASSWORD_QUALITY_ALPHANUMERIC // 用户输入的密码必须要有字母和数字。\n PASSWORD_QUALITY_NUMERIC // 用户输入的密码必须要有数字\n PASSWORD_QUALITY_SOMETHING // 由设计人员决定的。\n PASSWORD_QUALITY_UNSPECIFIED // 对密码没有要求。\n 12345
// 设置解锁方式 需要激活设备管理器(配置策略) public void setLockMethod() { if (devicePolicyManager.isAdminActive(componentName)) { Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); devicePolicyManager.setPasswordQuality(componentName, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); mContext.startActivity(intent); } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show(); } }
java
运行
12345678910115. 立即锁屏
//立刻锁屏 public void lockNow() { if (devicePolicyManager.isAdminActive(componentName)) { devicePolicyManager.lockNow(); } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show(); } }
java
运行
1234567896. 设置一段时间后锁屏
// 设置多长时间后锁屏 public void lockByTime(long time) { if (devicePolicyManager.isAdminActive(componentName)) { devicePolicyManager.setMaximumTimeToLock(componentName, time); } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show(); } }
java
运行
1234567897. 恢复出厂设置(谨慎操作)
// 恢复出厂设置 public void wipeData() { if (devicePolicyManager.isAdminActive(componentName)) { devicePolicyManager.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE); } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show(); } }
java
运行
123456788. 禁用相机
// 禁用相机 public void disableCamera(boolean disabled) { if (devicePolicyManager.isAdminActive(componentName)) { devicePolicyManager.setCameraDisabled(componentName, disabled); } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT) .show(); } }
java
运行
1234567899. 重置密码
// 重置密码 public void resetPassword(String password) { if (devicePolicyManager.isAdminActive(componentName)) { devicePolicyManager.resetPassword(password, DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY); } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show(); } }
java
运行
12345678910.设定存储设备加密
这个东西,我一直不知道有什么用,有谁知道可以说下
// 加密存储 public int encryptedStorage(boolean isEncrypte) { if (devicePolicyManager.isAdminActive(componentName)) { int result = devicePolicyManager.setStorageEncryption(componentName, isEncrypte); Log.d(TAG, "encryptedStorage:result->" + result); return result; } else { Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show(); } return -1; }
java
运行
12345678910111213详细代码
https://github.com/ddssingsong/DevicePolicyManager
网址:Android 设备管理器 理解和使用 https://www.yuejiaxmz.com/news/view/1412655
相关内容
改变你的电源键使用习惯:Android 11「设备控制器」详解Android养生管理app设计源码案例详解
Android智能设备:如何轻松管理你的记忆宝藏?
解锁健康生活:Android智能设备带你全面监测健康管理新篇章
Android设备远程控制解决方案指南
Android助手一键下载,轻松管理你的移动设备
解锁Android任务管理:掌握TaskID高效使用技巧
Todo.txt Android 应用:简约的任务管理解决方案
Android日历设计攻略:打造个性化日程管理利器
Android生命周期:理解与应用

