通过 Android Management Api 或设备所有者 locktask 开发 Cosu 应用程序

Posted

技术标签:

【中文标题】通过 Android Management Api 或设备所有者 locktask 开发 Cosu 应用程序【英文标题】:Cosu app development through Android Management Api or device owner locktask 【发布时间】:2018-03-25 15:57:57 【问题描述】:

我必须为我的企业设备实现一次性应用程序,其中只有一个主要的 android 应用程序本身可以使用 2-3 个其他应用程序,如通话、短信和谷歌地图,除了该用户 不能使用或访问其他应用和设置,

1) 我考虑过Corporate owned Single use through Enterprise Management Api ,它更复杂、更大,但更完整的解决方案。

2) 我已经实现并测试了示例 Lock task with an android device owner app 这看起来更像是我的解决方案,但有一个问题

如何为生产级设备配置设备所有者?对于我的测试,我能够使用 adb shell 命令进行配置。我知道设备必须是新的/重置和未配置,这不是问题。

我在这里寻求一些建议,如果有人实施它会有所帮助。

更新

使用 Fred 建议的 android 管理 Api QuickStartGuide 似乎是正确的方法。 我的政策是Multiple app from custom launcher 现在我陷入了困境,我想发布我的启动器应用程序或其他应用程序以仅为我的企业播放商店。

我已关注Upload your own app to the Google Play Store,这使我找到了publish private app,但我无法这样做,因为我没有获得限制分发选项。

我不知道如何完美地实现这一点。 对于我目前的政策和企业,我有 2 个有效的电子邮件 ID,

第一个 email_1 是连接到初始项目的邮件 and

所有 google api 调用都在 email_1 下完成

另一个是 email_2,一个是企业管理员

并连接到托管的 Google Play 商店。

email_1 和 email_2 都拥有我公司开发者帐户的管理员权限

现在我需要弄清楚仅为我的企业发布应用程序,我认为存在正确权限或其他问题, 需要帮忙。 谢谢

【问题讨论】:

配合android管理api使用时如何使用cosu锁任务模式。我能够添加策略并安装应用程序,但在将我的 cosu 应用程序设置为默认启动器后,我仍然能够使用后退按钮导航到默认启动器。 我想将 cosu 模式与地图应用程序一起使用。你能帮我完成这个过程吗 我面临的问题是如果不将我的 cosu 应用程序设置为设备所有者,我就无法启动锁定任务模式。如果我将其设置为设备所有者,我将无法使用 android 设备策略 @Akshaykomarla,在你应该制定的政策中 应用是否需要在 google play store 中才能使用 Android 设备策略? 【参考方案1】:

一旦您了解了缺失的链接,这很容易。 文档应该明确说明这些步骤。

1 设置帐户

我们为客户创建了一个 Google 套件帐户,并将他的应用上传到使用其组织下的 Google 帐户创建的 Google Play 控制台帐户中,并将应用分发限制在其组织中。

我们还在此处为我们的组织添加了 Android for Work:https://admin.google.com/AdminHome?pli=1&fral=1#SelectServices

并为我们的组织添加了一个角色来管理 Google Play 私人上传: https://admin.google.com/AdminHome#DomainSettings/notab=1&role=new-role&subtab=roles

2 查找组织 ID

这是关键部分。您应该在此处找到您的组织 ID:https://play.google.com/work/adminsettings

3 注册组织

按照 Android Management API 的步骤操作时,您需要注册在您的 Google For Work 帐户中找到的组织 ID。

使用您的企业 ID 执行详细的here 步骤:

enterprises/enterpriseId/enrollmentTokens/enrollmentTokenId

4 添加您的应用

在 ApplicationPolicy 中使用其 PackageName 添加您的应用。您的设备现在可以找到并安装它。

【讨论】:

首次设置登录时,必须使用 GSuite 帐户的管理员登录。我是员工,一旦我用我的帐户登录,我就会得到这个drive.google.com/open?id=0B-eKtGcMxbwQTlJnLVdrcURsNEU。 是的,您可能需要您的管理员来执行此操作 @FrancescoFrapporti 这种方法是否需要 Google 套件帐户?我能够将私有应用程序发布到一个组织,并在该组织下使用包含私有应用程序的策略配置设备,但该应用程序未显示在配置的设备上。我已经发布了一个问题here @JeremiahZucker 您是否发现该应用没有显示的原因?我有同样的问题,但我看到您链接到的问题已被删除。 @HenrikSolgaard 抱歉回复晚了,但几天后才出现。比 24 小时长得多,但据我所知,它刚刚出现。【参考方案2】:

您不再需要实施设备策略控制器来管理 Android 设备,Google 最近发布了Android Management API,它允许您通过几个 Cloud API 调用来设置 COSU 设备。

如果您有一个主应用并希望允许打开其他几个应用,您可以将主应用设置为自定义启动器,并将其他应用标记为lockTaskAllowed。您可以简单地通过定义一个ApplicationPolicy 来做到这一点,如下所示(复制自Create a policy):

"applications": [
  
    "packageName": "com.example.custom_launcher",
    "installType": "FORCE_INSTALLED",
    "lockTaskAllowed": true,
    "defaultPermissionPolicy": "GRANT",
  ,
  
    "packageName": "com.example.app1",
    "installType": "FORCE_INSTALLED",
    "lockTaskAllowed": true,
    "defaultPermissionPolicy": "GRANT",
  
],
"persistentPreferredActivities": [
  
    "receiverActivity": "com.example.custom_launcher",
    "actions": [
      "android.intent.action.MAIN"
    ],
    "categories": [
      "android.intent.category.HOME",
      "android.intent.category.DEFAULT"
    ]
  
]

【讨论】:

您尝试过这种方法吗,我尝试了 QUICKstart 指南,我们通过 google api explorer 进行这些 api 调用,我设置了我的 android 7 设备,但我能够使用我的个人帐户登录游戏商店以成功安装其他应用程序。我如何确保设备不会安装未列入白名单的应用程序,有没有办法自动安装我的应用程序?我会再试一次看看。 要禁止添加新帐户,您可以设置modifyAccountsDisabled = true。要自动安装应用程序,您可以将其添加到策略的 applications 字段中,如上例所示或添加到 quick start example,请注意,您的应用程序需要在 Google Play 中可用,如果它还没有的话您可以通过Play Developer Console添加它。 感谢@fred,我如何使用Android Management API Client Library for Java developers.google.com/api-client-library/java/apis/… 并实现我的mdm。我知道这是用 google api explorer 做的快速入门。我只有编写android的经验,那会是什么样的应用程序? 这取决于您希望如何部署您的设备。让服务器处理 API 调用是很常见的,这样您就可以从单个服务器远程控制所有设备,并且可以从该服务器公开管理控制台。如果您还没有服务器,您可以使用 Google App Engine 构建服务器,例如(in Python 或 in Java)。 有哪些安装应用程序的方法,一种方法是在 Play 商店中发布应用程序,还有其他方法吗,例如通过 USB 我现在在 Play 商店中没有我的应用程序,目前在之后设置新设备,我可以不受任何限制地使用谷歌应用程序。使用 modifyAccountsDisabled = true 用户无法将帐户添加到谷歌或谷歌地图应用程序,而地图应用程序在策略中但谷歌自动安装。【参考方案3】:

Google 在这里提供了一个很好的功能列表: https://developers.google.com/android/work/requirements/features

如果您的设备有 NFC,我会使用 NFC 进行配置。您可以在此处查看代码以实现您自己的实现,或者您只需进行少量修改即可使用该应用程序。 https://github.com/googlesamples/android-NfcProvisioning

通过点击 Google 设置向导中的欢迎屏幕 6 次,您可以使用 QR 码配置。我认为这有点麻烦,需要Android 7.0+。

这是您仅有的两个选择,除非您成为 Google EMM 合作伙伴或再次与他们合作以支持 Android 8.0+ 设备上的零接触注册,以实现您自己的自制解决方案。

您可能还想查看现有的开源 EMM/MDM 实现,例如 WSO2。

【讨论】:

@fred,@steve,我的设备没有 nfc,无论如何我尝试了这种方法在我的个人设备上进行测试,但是当 Play 商店应用程序中有工作配置文件时,我能够安装其他应用程序来自我的个人帐户。 您尝试了哪种方法?您是否从出厂重置状态配置了您的个人设备?听起来您刚刚在个人设备上安装了工作资料。您希望您的设备成为具有设备所有者的工作管理设备,而不是 BYOD 或具有配置文件所有者(工作配置文件)的个人启用设备。 是的,史蒂夫,你说得对,我希望我的设备成为工作托管设备。我从这个来源尝试了 Android 管理 API,developers.google.com/android/management/quickstart 现在还有一个问题,长按home键会打开google助手应用,怎么禁用呢? 应用是否需要在 google play store 中才能使用 Android 设备策略?

以上是关于通过 Android Management Api 或设备所有者 locktask 开发 Cosu 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我们能否向注册了 Android Management API 解决方案的手机发送通知(谷歌)

Android Management API - 设置问题

适用于设备的 Android Management API 更改策略

在 Android Management API Policy 中启用设备的相机应用

Android Management Api 失去对已注册设备的控制权

Android Management API 的委托范围似乎没有被 Companion 应用程序获取