从Android Lollipop中的设备所有者应用程序启动Kiosk模式中的另一个应用程序

时间:2015-04-10 12:13:40

标签: android android-5.0-lollipop kiosk-mode root-access android-screen-pinning

是否有可能在Android L上启动另一个第三方应用程序锁定在Kiosk模式?能够在不使用root访问权限的情况下做这样的事情会很棒。但如果不使用root访问权限就无法做到这一点,那对我来说也是一个解决方案。

我已经成功开发了一个应用程序,该应用程序是我设备上的设备所有者,可以使用startLockTask()方法将自己锁定到自助服务终端模式。

2 个答案:

答案 0 :(得分:2)

如果您的应用已经是设备所有者(如您所说),您应该可以通过此应用调用:

DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Activity.DEVICE_POLICY_SERVICE);
devicePolicyManager.setLockTaskPackages(new ComponentName(context.getApplicationContext(), YourDeviceOwnerReceiver.class), new String[]{"the.package.you.want.to.allow.to.be.in.kiosk.mode"});

然后,根据您要在Kiosk模式中设置的活动(应该在the.package.you.want.to.allow.to.be.in.kiosk.mode中),您可以拨打startLockTask()

答案 1 :(得分:0)

如果您可以在自助服务终端模式下锁定自己的应用,则可以Intent()启动另一个应用,其中一些flags表示您的活动托管意图以继续您的自助服务终端。您还必须使用AndroidManifest中运行的应用程序的启动模式。与singleTopsingleTasksingleInstance混在一起,直到找到你想要的东西。 singleTop应该是您正在寻找的那个,但很难辨别。

如果所有其他方法都失败了,您可以随时启动您的意图,然后执行“adb kill SystemUI'通过exec("su")来杀死状态栏,软键和硬键以及导航的事情。根据设备的不同,SystemUI可能会自行重启。你可以使用计时器。肮脏的解决方法,但这就是自助服务终端的全部内容。对于代码,您可以在此处使用答案:exec su inside Android app

希望我帮忙,