编程语言
首页 > 编程语言> > 设置了所有者设备应用程序后,为什么不能创建受限个人资料?

设置了所有者设备应用程序后,为什么不能创建受限个人资料?

作者:互联网

我最近注意到,设置了设备所有者应用程序后,就无法创建受限配置文件.

第一种情况:未设置我的设备所有者应用程序时.
在“设置”>“用户”中:我可以“添加用户或个人资料”,然后在“用户”或“受限个人资料”之间进行选择.

 

第二种情况:设置了我的设备所有者应用程序时.
从“设置”>“用户”:我只能“添加用户”,然后得到创建新用户的确认.在第二种情况下,无法创建受限配置文件.

我想知道为什么在这种情况下不可用,以及如何在这种情况下创建受限配置文件?
我的问题的第二部分是:如何使用现有的DevicePolicyManager API(据我所知,没有公共API创建受限配置文件)以编程方式创建受限配置文件或等效行为?

更新:
我制作了一个示例应用程序来说明这一点.它在Github上可用.

重现步骤 :

>编译应用
>将应用程序上传到您的设备
>使用dpm命令行工具将应用程序设置为设备所有者:adb shell dpm set-device-owner com.mytest.minimalistdeviceowner / .DeviceAdminRcvr.
>在“设置”>“用户”中检查是否无法创建配置文件
>通过在应用程序中单击“取消设置设备所有者”,将应用程序设置为设备所有者.
>在“设置”>“用户”中检查创建的内容是否可用

解决方法:

受限配置文件不适用于具有设备所有者的平板电脑或手机.显示在可用的“设置”应用程序源代码here中:

DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
                Context.DEVICE_POLICY_SERVICE);
// No restricted profiles for tablets with a device owner, or phones.
if (dpm.getDeviceOwner() != null || Utils.isVoiceCapable(context)) {
    mCanAddRestrictedProfile = false;
    mAddUser.setTitle(R.string.user_add_user_menu);
}

因此,这不是错误,而是功能.为避免干扰您的设备所有者应用,可能已将其禁用.
您应该意识到这一点,并且由于您拥有设备所有者应用程序的强大功能,这意味着您必须通过此设备所有者应用程序自己限制用户.

为此,您可以使用通过DevicePolicyManager.addUserRestriction(),DevicePolicyManager.setGlobalSetting(),DevicePolicyManager.setSecureSetting()提供的所有限制API来配置设置,还可以使用DevicePolicyManager.setApplicationHidden()来限制用户对应用程序的访问.

标签:android-5-0-lollipop,device-policy-manager,device-owner,android
来源: https://codeday.me/bug/20191120/2047155.html