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

时间:2017-02-13 08:25:37

标签: android android-screen-pinning cosu

我有一个客户项目,我必须制作单任务Android设备。客户无法逃避我公司开发的应用程序。客户也无法启动任何其他应用程序,并且在启动设备时启动了我们的应用程序。总体而言,所有客户都可以使用该设备运行我们的应用程序。

除了生根设备,禁用所有系统按钮并使我们的应用程序成为启动器之外,还有其他方法可以完成这项工作。我有400个设备用于此目的,因此根除所有这些将耗费大量时间。

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

Androids自己的屏幕固定不够好,因为客户可以逃脱应用程序。有些人可能会建议使用像SureLock这样的自助服务终端应用程序,但我公司的目标是在不使用任何第三方应用程序的情况下找到明确的解决方案。通过一些信息亭应用程序运行我们的应用程序不是我们的目标。

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

如果有人对此问题有一些提示,我将非常感激。

3 个答案:

答案 0 :(得分:8)

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

正如您所提到的,生根设备将在功能上为您提供所需的功能 - 但是数百台设备需要root,很难维护,并且您(可能)会向您的设备和应用程序引入安全问题。 / p>

另一个选择是使用谷歌的锁定任务模式用于COSU设备[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操作系统,并将您的应用锁定在自助服务终端模式(+其他功能,如禁用相机/短信,删除应用和隐藏设置等),然后将其部署到您的所有设备远程。如果您的需求发生变化,Mason还支持由您控制的操作系统和应用程序更新。

如果这听起来很有用,请随时与我联系:trevor @ bymason.com

免责声明:我为Mason工作

答案 1 :(得分:1)

通过在清单文件中定义,将您的应用程序作为启动器应用程序。

然后转到设置移动设备并将默认启动器应用程序更改为您的应用程序。

答案 2 :(得分:1)

之前我遇到过同样的问题。我花了至少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