设置所有者设备应用程序后,为什么我无法创建受限配置文件?

2024-02-13

我最近注意到,当设备所有者申请设置后,无法创建受限配置文件。

第一个案例:当我的设备所有者应用程序未设置.
From 设置>用户: 我可以“添加用户或个人资料”,然后选择一个User or a 受限个人资料.

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

我想知道为什么它在这种情况下不可用以及在这种情况下如何创建受限配置文件?
我的问题的第二部分是:如何使用现有的以编程方式创建受限配置文件 - 或等效行为设备策略管理器 API http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html(据我所知,没有公共 API 来创建受限配置文件)?

UPDATE:我制作了一个示例应用程序来说明这一点。它可以在Github https://github.com/florentdupont/MinimalistDeviceOwner.

重现步骤 :

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

受限配置文件不适用于拥有设备所有者的平板电脑或手机。它显示在可用的“设置”应用程序源代码中here https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/users/UserSettings.java#L223 :

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);
}

所以这不是一个错误,而是一个功能。它可能被禁用以避免干扰您设备所有者应用程序。 您应该意识到这一点,因为您对设备所有者应用程序拥有更多权力,这意味着您必须自己限制您的用户使用此设备所有者应用程序。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置所有者设备应用程序后,为什么我无法创建受限配置文件? 的相关文章

随机推荐