Android:如何让设备只运行一个应用程序?

标签 android android-screen-pinning cosu

我有一个客户项目,我必须在其中制作单任务 android 设备。客户无法逃脱我公司开发的应用程序。此外,客户无法启动任何其他应用程序,我们的应用程序会在设备启动时启动。总体而言,客户能够使用该设备执行的所有操作就是运行我们的应用程序。

除了对设备进行 root、禁用所有系统按钮并使我们的应用程序成为启动器之外,还有其他方法可以使这项工作正常进行吗?为此,我有大约 400 台设备,因此对所有这些设备进行 root 操作会花费大量时间。

我还阅读了有关 COSU 设备的 Google 教程,但发现它非常困惑 https://developer.android.com/work/cosu.html#testing-plan

Android 自己的屏幕固定不够好,因为客户可以从应用程序中退出。有些人可能会建议使用 SureLock 等信息亭应用程序,但我公司的目标是在不使用任何第三方应用程序的情况下为此找到明确的解决方案。通过一些信息亭应用程序运行我们的应用程序也不是我们的目标。

我在 Stack Overflow 上发现了一些有类似问题的帖子,但不是我要找的答案。

如果有人对这个问题有一些提示,我将不胜感激。

最佳答案

基于 Android 构建的单一用途设备可能难以实现。有几个不同的选项,但每个选项都需要权衡取舍。

正如您所提到的,获取设备的 root 权限将在功能上为您提供您想要的东西 - 然而,对数百台设备进行 root 操作将非常耗时,难以维护,并且您(可能)会给您的设备和应用程序带来安全问题。

另一种选择是为 COSU 设备使用 Google 的锁定任务模式[1]。那里的链接有一个很好的图形,显示了锁定任务模式的特性:

  • 1 个固定到主屏幕的应用
  • 只能锁定被 DPC(设备策略 Controller )列入白名单的应用
  • 隐藏主页和最近按钮
  • 调用 stopLockTask() 退出

为此使用 Google 的解决方案有一些缺点。首先,Google 建议创建(并因此维护)一个完全独立的 DPC 应用程序以作为设备所有者运行并设置策略[2]。您还将依赖 Google Play 来管理应用程序更新,并需要将 Play 帐户与每台设备相关联,这些帐户“用于识别未绑定(bind)到单个用户的单个设备,以简化每台设备的应用程序分发规则在 COSU 风格的场景中[3]。要在设备上自动获取您的 DPC 应用程序,您的“DPC 必须在 Google Play 上公开可用,并且最终用户可以通过输入 DPC 特定标识符从设备设置向导安装 DPC。”[3] 您还需要将用户应用程序上传到 Google Play[4],对于一些不希望他们的应用程序出现在 Play 上的人来说,这可能是个问题。走这条路可以为您提供所需的功能,但可能会很复杂,并且还会将您和您的客户与 Google/Play 服务及其工作流程紧密联系在一起。

您还可以查看像 Mason[5] 这样的企业移动部署平台。在您的情况下,您可以在几分钟内创建一个自定义 Android 操作系统,并将您的应用程序锁定在信息亭模式(+ 其他功能,如禁用相机/短信、删除应用程序和隐藏设置等),然后将其部署到您的所有设备远程。如果您的要求发生变化,Mason 还支持由您控制的操作系统和应用程序更新。

免责声明:我为 Mason 工作

关于Android:如何让设备只运行一个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199591/

相关文章:

android - Nativescript 中原生传感器的可访问性

Android - Lollipop Screen 固定是否适用于同一应用程序中的多个 Activity ?

android - 实用更新应用程序时出现 PackageInstaller 错误

android - android设备中的sqlite问题

android - Android Auto 中未列出的应用程序

android - 如何在 kiosk 模式和启用屏幕 pin 的设备中更新应用程序?

android - 无需请求用户操作的 startLockTask()

android - 配置设备所有者和 CosuApp

android - 如何阻止 "holding the back button"在 Android 7+ 上转义 "Lock Task mode"

java - SharedPreferences:为什么我的值没有被覆盖?