一、准备工作 配置DeviceAdmin
配置DeviceAdmin可参考 android权限级别探索(二),设备管理器开启和使用及常见api,创建DeviceReceiver继承DeviceAdminReceiver,并在AndroidManifest中注册,完成两步即可。无需将应用勾选为设备管理器,获取到deviceowner权限后会自动勾选。
二、获取DeviceOwner权限
Google没有提供类似获取设备管理器权限那样的api,所以个人设备的deviceowner权限一般是通过adb shell命令赋予的,而一些大公司是采用批量订购设备,定制room的方式获取DeviceOwner权限。
获取deviceowner的adb命令:
adb shell dpm set-device-owner com.example.myapplication/com.example.myapplication.DeviceReceiver
其中com.example.myapplication是我demo的包名。com.example.myapplication.DeviceReceiver是我继承DeviceAdminReceiver的广播接收者的类名。
一般设置成功,会返回
“Success: Device owner set to package com.example.myapplication
Active admin set to component {com.example.myapplication/com.example.myapplication.DeviceReceiver}”
三、api收集(精华)
设置decviceowner很简单,真正开发中难的是如何在种类繁多的api中找到自己想要的。
google提供了官方文档(点击查询google提供的所有api),但是其中包含了大量的无效的,过时的,不适用国内厂商设备的(尤其是华为)。以下列出api不保证所有机型可用。
以setCameraDisabled(boolean disable) 举例如何禁用相机:
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = new ComponentName(context, DeviceReceiver.class);
dpm.