锁定Android应用程序

时间:2014-11-18 18:09:44

标签: android kiosk-mode

我已经在这方面工作了很长时间但似乎无法找到解决方案。

我有一个Android平板电脑,打算用于专有应用程序。我们需要锁定平板电脑,以便它只能运行应用程序(并选择其他几个)。我知道" Kiosk"模式,但我需要用户仍然可以访问后面和主页按钮(主页回到我们的应用程序)

主要是我需要用户仍然可以访问后退和主页按钮的原因是他们可以在启动说... wifi设置后返回我的应用程序。

我的应用程序有一个线程,即使不在前台进行数据处理等也一直在运行。所以我的第一个想法是......让我们检测前景中的应用程序是什么,如果它不是我的应用程序或允许的小列表(如wifi设置),那么就杀死应用程序并将我的应用程序带到前台。但无论我尝试什么,它似乎都不起作用......

首先我尝试模拟主页按钮(我的应用程序链接到主页按钮)一旦我的应用程序是唯一的主页按钮选项,这不起作用。

我尝试使用android.os.Process.killProcess来杀死前台的任何应用程序......这只适用于很少的应用程序。

我也试过使用意图重新启动应用程序,但这也不起作用。

据我所知,这主要是因为Android系统试图阻止恶意应用程序控制该设备,此应用程序不会在任何市场上发布。

1 个答案:

答案 0 :(得分:0)

不可能,甚至非常误导甚至尝试。正如您所提到的,Android 5.0引入了合法的自助服务终端模式(称为“屏幕固定”或“任务锁定”),允许单个应用程序接管设备。我不认为有任何方法可以将第三方活动作为锁定任务的一部分。在5.0之前,用于模拟自助服务终端模式的丑陋黑客是constantly poll the list of foreground apps,如果顶级应用程序不在您的白名单中,请关闭应用程序的启动器意图,将您的应用程序带到前台。谷歌一直在想办法防止这种情况发生;例如,在4.x的某个时候他们做了这个,所以你可以在任何“全屏”应用程序上向下滑动任务栏,这不会触发你的应用程序意识到它不在前台。从那里很容易杀死你的整个应用程序。他们完全打破了5.0中的这个黑客攻击,因为每个应用程序只能在前台应用程序列表中看到自己。

  

我的应用程序有一个即使不在前台也一直在运行的线程

您甚至无法保证,尤其是当您明确创建Thread而非使用像IntentService这样的Android组件时。 Android可以在组件不在前台时销毁它们,如果应用程序没有剩余组件,它可能会终止整个过程。因此,您创建的任何Thread都可能会被突然终止,当您的应用返回到前台时,没有内置方式可以重新启动它。几乎没有合理的理由在Android中明确创建Thread