启用任务锁定时启动另一个应用程序

时间:2015-08-26 15:28:26

标签: android android-5.0-lollipop kiosk-mode

我使用this guide将我的应用激活为设备所有者。所以,我可以激活任务锁定。这与我希望Android的表现非常接近。

是否可以从设备拥有的应用中启动一个或多个特定的第三方应用,而无需停用任务锁?

如果没有,是否可以通过一些解决方法?我正在考虑停用任务锁,启动另一个应用程序,然后远程激活另一个应用程序的任务锁。

提前谢谢。

3 个答案:

答案 0 :(得分:1)

锁定任务只有在launch flags允许第三方活动启动到同一任务时才能启动第三方活动。如果您尝试在新任务中启动活动,它将向logcat打印警告,用户将看不到任何内容。

AFAIK,没有锁定其他任务的一般方法。另一项任务必须设计为锁定自己以响应某些意图。

答案 1 :(得分:1)

我知道我参加派对已经太迟了但是我这样做是为了让它为我工作。

当您将应用作为设备所有者时,您必须调用此方法:

DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    // get this app package name
    ComponentName mDPM = new ComponentName(this, DeviceAdmin.class);
    Utility.writeLogs(this, getString(R.string.info), "Trying to start lock task...");

    if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) {
        // get this app package name
        String[] packages = {this.getPackageName()};
        // mDPM is the admin package, and allow the specified packages to lock task
        myDevicePolicyManager.setLockTaskPackages(mDPM, packages);
        startLockTask();
    } else {
        Toast.makeText(getApplicationContext(), R.string.not_owner, Toast.LENGTH_LONG).show();
    }

只需在

中添加要从您的应用程序打开的应用程序的包名称
String[] packages = {this.getPackageName(), "Package names to be allowed"};

它应该适合你。

答案 2 :(得分:1)

在我的情况下,我的应用是一个需要锁定设备的企业应用,因此使用自助服务终端模式。但我的应用需要拨打电话和Google地图应用。

不确定是否是错误,但即使正确调用setLockTaskPackages(),某些版本的Android startActivity()也不起作用。这似乎是棒棒糖的问题。为了解决方法,我使用了startActivityForResult。