设置了所有者设备应用程序后,为什么不能创建受限个人资料?
作者:互联网
我最近注意到,设置了设备所有者应用程序后,就无法创建受限配置文件.
第一种情况:未设置我的设备所有者应用程序时.
在“设置”>“用户”中:我可以“添加用户或个人资料”,然后在“用户”或“受限个人资料”之间进行选择.
第二种情况:设置了我的设备所有者应用程序时.
从“设置”>“用户”:我只能“添加用户”,然后得到创建新用户的确认.在第二种情况下,无法创建受限配置文件.
我想知道为什么在这种情况下不可用,以及如何在这种情况下创建受限配置文件?
我的问题的第二部分是:如何使用现有的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