繁体   English   中英

是否可以在 Android Lollipop 中拥有不同时存在的“Profile Owner”应用程序

[英]Is it possible to have a “Profile Owner” app in Android Lollipop that is not co-present

Lollipop API 提供了 2 个新功能“配置文件所有者”和“设备所有者”( http://developer.android.com/about/versions/android-5.0.html#Enterprise )。 在它们之间,它们仅提供我需要的应用程序功能,父母可以用它来控制孩子的设备活动。 每个的设置流程是:

设备所有者

在设备设置期间,使用 NFC,您可以告诉 Android 您希望您的应用成为设备所有者。 然后,Android 从 URL 下载应用程序,设备被加密并作为设备所有者使用该应用程序进行配置。 因此,对于从 Google Play 安装我的应用程序的人,我需要该应用程序提示他们将设备恢复出厂设置,然后在另一台设备上安装另一个应用程序,然后通过 NFC 将它们碰撞在一起。 随着设置流程的进行,这远非理想。 但是一旦设置完毕,设备所有者 API 就会为此用例提供非常丰富的功能集。

个人资料所有者

对此的设置更直接一些:用户从 Google Play 安装应用程序,然后可以提示为应用程序授予个人资料所有者权限。 如果用户同意,该设备将由 Android 加密,并且在重新启动后,该设备具有 2 个使用相同启动器(主屏幕)的“共同呈现”配置文件。 设置可能更直接,但最终结果并不是我真正需要的,因为应用程序只能控制托管配置文件下的应用程序。

所以我想我实际上有两个问题:是否可以制作一个控制整个用户配置文件的配置文件所有者应用程序,即不是共同存在的托管配置文件? 或者是否可以使用更简单的设置流程制作一个设备所有者应用程序,不需要恢复出厂设置和 NFC 碰撞(生根不是一个选项)? 两种方法之间的一些中间立场将是理想的。

答案(1):托管配置文件作为单独的角色工作,配置文件下的所有应用程序都是不同的(它们是不同的独立应用程序实例),类似于新用户。 配置文件所有者是托管配置文件的所有者应用程序,因此与设备所有者相比,它没有太多的权力和功能,因此它无法控制整个用户配置文件。

答案 (2):要创建设备所有者,必须使用 NFC 方法,因为一旦您的设备设置完毕,它就会被配置,之后您就不能将您的应用程序设为设备所有者(除非您使用生根方法)。 您可以按照给定的链接制作设备所有者

1) 使用 NFC 创建设备所有者

2) 生根

是否可以制作一个控制整个用户配置文件的配置文件所有者应用程序,即不是共同呈现的托管配置文件?

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. ...
 */

哦。 :( 因此,如果您的设备没有root,我认为您必须在恢复出厂设置后和安装向导完成之前以某种方式安装您的个人资料所有者应用程序。

边注

我看了某个白皮书的第 13 页 它说:“在托管配置过程中,称为 ACTION_PROVISION_MANAGED_PROFILE 的意图被调用。如果用户有一个预先存在的个人帐户,托管配置文件是单独的,但同时存在。” 在我看来,这意味着,如果您在没有用户帐户的设备上调用 ACTION_PROVISION_MANAGED_PROFILE,您的应用程序可能会控制整个用户配置文件。 但同样,我想您必须在恢复出厂设置后以及安装向导完成之前以某种方式安装您的个人资料所有者应用程序。

做你想做的

我认为你想要的遗憾是不可能的。 如果需要,您可以针对 Android 提交功能请求并要求他们使其成为可能。 如果您这样做,请在下方留下评论,并附上功能请求的 URL。 如果您没有足够的声望点数来发表评论,请通过gmail.com tealhill给我发送电子邮件,并让我代表您发表评论。

解决方法

我的理论是,一个可能的解决方法可能是让您的应用程序下载并启动一个以手机为根的第三方应用程序。 大多数手机都可以root。 手机root后,您的应用程序就可以成为设备所有者。 之后,也许您的应用程序可以取消手机的root 并仍然是设备所有者。 或者可能不是。 我不知道。

如果您的应用无法取消手机的 root 权限,或者没有尝试,手机将永远保持 root 权限。 这可能存在安全风险。 您可能应该警告用户。

正如正确所说,设备上只能有 1 个设备所有者,但设备上可以有多个配置文件所有者。 每个配置文件所有者将激活 1 个用户。

这可以通过在 DevicePolicyManager 中调用 createAndInitializeUser api 来实现。

http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#createAndInitializeUser%28android.content.ComponentName,%20java.lang.String,%20java.lang.String,%20android.content.ComponentName ,%20android.os.Bundle%29

我能够创建多个配置文件所有者,但仍在努力找出是否有办法让设备所有者与配置文件所有者交谈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM