4

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

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

4

2 回答 2

3

如果您有一个已经是设备所有者的应用程序(如您所说),您应该可以从此应用程序调用:

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().

于 2015-12-04T13:35:15.637 回答
0

如果您可以在信息亭模式下锁定您自己的应用程序,您可能可以启动另一个应用程序,Intent()其中flags显示意图由您的活动托管以继续您的信息亭。您还必须弄乱您的应用在 AndroidManifest 中运行的启动模式。乱来,singleTop直到你找到你想要的。应该是你要找的那个,但很难辨别。singleTasksingleInstancesingleTop

如果一切都失败了,您可以随时启动您的意图,然后执行“adb kill SystemUI”之类的exec("su")操作,以终止状态栏、软键和硬键以及导航。根据设备,SystemUI 可能会自行重启。不过,您可以使用计时器。肮脏的解决方法,但这就是信息亭的全部内容。对于代码,您可以在这里使用答案:exec su inside Android app

希望我有所帮助,

于 2015-04-11T00:28:53.827 回答