是否可以制作一个控制整个用户个人资料的个人资料所有者应用程序,即不是共同存在的托管个人资料?
ACTION_PROVISION_MANAGED_PROFILE
配置文件所有者应用通过发送带有操作 DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE 的意图来创建托管配置文件。(资源。)
让我们打开DevicePolicyManager.java。
ACTION_PROVISION_MANAGED_PROFILE 的 Javadoc 注释说:
/**
* ... Starts the provisioning flow which sets up a managed profile.
* ...
* ... The user which provisioning is started from and
* the managed profile share a launcher. ...
*/
所以 ACTION_PROVISION_MANAGED_PROFILE 可能无助于做你想做的事。
嗯。
ACTION_PROVISION_MANAGED_USER
该文件中唯一看起来可能有帮助的其他操作是 ACTION_PROVISION_MANAGED_USER。
让我们看一下Javadoc 注释。它说:
/**
* ... Starts the provisioning flow which sets up a managed user.
* ...
* This intent will typically be sent by a mobile device management application (MDM).
* Provisioning configures the user as managed user and sets the MDM as the profile
* owner who has full control over the user.
伟大的!有什么问题?
* ... Provisioning can only happen before user setup has
* been completed. ...
*/
哦。:(因此,如果您的设备没有植根,我认为您必须在恢复出厂设置后和设置向导完成之前以某种方式安装您的个人资料所有者应用程序。
边注
我查看了某个白皮书的第 13 页。它说:“在托管配置过程中,称为 ACTION_PROVISION_MANAGED_PROFILE 的意图被调用。如果用户有一个预先存在的个人帐户,则托管配置文件是独立的,但同时存在。” 在我看来,这似乎意味着,如果您在没有用户帐户的设备上调用 ACTION_PROVISION_MANAGED_PROFILE,您的应用程序可能会控制整个用户配置文件。但同样,我想您必须在恢复出厂设置后以及设置向导完成之前以某种方式安装您的个人资料所有者应用程序。
做你想做的
我认为你想要的很遗憾是不可能的。如果您愿意,您可以向 Android 提出功能请求,并要求他们使之成为可能。如果您这样做,请在下方留下评论,并附上功能请求的 URL。如果您没有足够的声誉点来发表评论,请发送电子邮件tealhill
至gmail.com
并让我代表您发表评论。
一种解决方法
我推测一个可能的解决方法可能是让您的应用程序下载并启动一个植根于手机的第三方应用程序。大多数手机都是可root的。一旦手机被植根,您的应用程序就可以成为设备所有者。之后,也许您的应用程序可以取消手机的根目录并仍然是设备所有者。或者可能不是。我不知道。
如果您的应用程序无法取消手机的root 权限,或者没有尝试,手机将永远保持root 状态。这可能是一个安全风险。您可能应该警告用户。