一、什么是Work Profile
因为Work Profile在体验上与Device Owner和Device admin有很大的差别,所以在讲怎么开启profileOwner之前先讲一下什么是Work Profile。
ProfileOwner/WorkProfile,是google为了Android在企业中运用推出的安全方案。
开启Work Profile之后的效果如上图。图中“My Application”的app是我的demo名称。可以看出,此时界面上出现两个一样的demo,一带有有文件包图标,一个没有文件包图标。此时系统分为了两个空间,为方便描述,我把安装普通应用的空间称为personal profile(个人空间),安装带有小图标应用的空间称为work profile(工作空间)。两个空间相互独立,例如work profile不能调用personal profile的相机,personal profile也不能读取work profile保存的文件。
那么work profile 还可以做什么呢?除了显而易见的双开、数据安全独立之外,由于是我的demo开启的work profile,我的demo拥有这个work profile的profile owner权限,这个权限可以对work profile里面的应用进行安全管理,例如设置密码、禁止安装、禁止截图、禁止拍照等操作,还可以对work profile中添加应用,例如图中就已经添加了“文件”和“通讯录”。
删除profile的方式在 设置-账户下:
![](https://img-blog.csdnimg.cn/20200507213703136.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NTAxNTYw,size_16,color_FFFFFF,t_70#pic_center)
二、如何开启profile
1 准备工作
同设备管理器的准备工作一样,创建一个创建DeviceReceiver继承DeviceAdminReceiver,并在AndroidManifest注册中注册。详见android权限级别探索(二),设备管理器(DeviceAdmin)开启和使用及常见api ,只要完成AndroidManifest注册即可,不用打开设备管理器。
2 打开work profile
private static final int REQUEST_PROVISION_MANAGED_PROFILE = 1;
private void provisionManagedProfile(Activity activity) {
Intent intent = new Intent(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
intent.putExtra(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
activity.getApplicationContext().getPackageName());
} else {
final ComponentName component = new ComponentName(activity,
DeviceReceiver.