问题描述
我有一个客户项目,我必须在其中制作单任务 android 设备。 客户无法逃脱我公司开发的应用程序。 此外,客户无法启动任何其他应用程序,我们的应用程序在设备启动时启动。 总的来说,客户可以使用设备做的就是运行我们的应用程序。
除了生根设备,禁用所有系统按钮并使我们的应用程序成为启动器之外,还有其他方法可以使此工作正常进行吗? 为此,我有大约 400 台设备,因此扎根所有这些设备将花费大量时间。
我还阅读了谷歌关于 COSU 设备的教程,但发现它非常令人困惑
Android 自己的屏幕固定不够好,因为客户可以退出应用程序。 有些人可能会建议使用像 SureLock 这样的自助服务终端应用程序,但我公司的目标是在不使用任何第三方应用程序的情况下找到明确的解决方案。 通过一些自助服务终端应用程序运行我们的应用程序也不是我们的目标。
我在 Stack Overflow 上找到了一些类似问题的帖子,但不是我正在寻找的答案。
如果有人对这个问题有一些提示,我将不胜感激。
1楼
构建在 Android 之上的单用途设备可能难以实现。 有几种不同的选择,但每个都有权衡。
正如您所提到的,生根设备将在功能上为您提供所需的功能 - 但是要生根数百个设备将非常耗时,难以维护,并且您(可能)会为您的设备和应用程序引入安全问题。
另一种选择是对 COSU 设备使用 Google 的锁定任务模式[1]。 那里的链接有一个很好的图形,显示了锁定任务模式的功能:
- 1 个应用固定在主屏幕上
- 只有被 DPC(设备策略控制器)列入白名单的应用才能被锁定
- 隐藏主页和最近按钮
-
通过调用
stopLockTask()
退出
为此使用 Google 的解决方案有一些缺点。 首先,Google 建议创建(并因此维护)一个完全独立的 DPC 应用程序,以作为设备所有者运行并设置策略[2]。 您还将依赖 Google Play 来管理应用程序更新,并且需要将 Play 帐户与每个设备相关联,这些帐户“用于识别不与单个用户绑定的单个设备,以实现简化的每设备应用程序分发规则在 COSU 风格的场景中”[3]。 要在设备上自动获取您的 DPC 应用程序,您的“DPC 必须在 Google Play 上公开可用,最终用户可以通过输入 DPC 特定标识符从设备设置向导安装 DPC。”[3] 您还需要将用户应用程序上传到 Google Play[4],这对于一些不想在 Play 上使用他们的应用程序的人来说可能是一个问题。 走这条路线可为您提供所需的功能,但可能会很复杂,并且还会将您和您的客户与 Google/Play 服务及其工作流程紧密联系在一起。
您还可以查看 Mason[5] 等企业移动部署平台。 在您的情况下,您可以在几分钟内创建一个自定义 Android 操作系统,并将您的应用程序锁定在信息亭模式(以及禁用相机/短信、删除应用程序和隐藏设置等其他功能),然后将其部署到您的所有设备远程。 如果您的需求发生变化,梅森还支持由您控制的操作系统和应用程序更新。
免责声明:我为梅森工作
- [1]
- [2]
- [3]
- [4]
- [5]
2楼
我之前也遇到过同样的问题。 我花了至少 3 天时间做研究。 我试图找到很多解决方案,但我找到了零。
How I solve is
1. Up To JellyBean
- Use System Alert Dialog (And make it transparent and small size like 2 * 2 And display in some corner(User can't see it)). User can't press home button If there is system Alert dialog
2. After JellyBean, This method doesn't work. The user can press the home button even though there is System Alert Dialog.
so what I did is, start the service on stop and start the same activity again and again(within sec). So user can't see any difference.Don't forget to make activity as single task so that even though you start same activity from service, again and again, new activity will not create (So Ugly way )
- You can simple make screen full screen. make sure in kiosk mode try to check if the screen is in full-screen mode. if not make it full-screen mode(its not hard to do)
- other way is to make launcher app but when ever you pressed home button it always asked to choose launcher app. if user mistakenly choose default/ other launcher app, this solution doesnt work
Good luck
3楼
通过在清单文件中定义,使您的应用程序成为启动器应用程序。
之后转到移动设备的设置并将默认启动器应用程序更改为您的应用程序。