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

Android 启用任务锁定时启动另一个应用程序,android,android-5.0-lollipop,kiosk-mode,Android,Android 5.0 Lollipop,Kiosk Mode,我曾经以设备所有者的身份激活我的应用程序。因此,我可以激活任务锁定。这与我希望Android的表现非常接近 是否可以从拥有设备的应用程序中启动一个或多个特定的第三方应用程序,而无需停用任务锁 如果没有,是否可以采取一些变通办法?我正在考虑停用任务锁,启动另一个应用程序,然后远程激活另一个应用程序的任务锁 提前感谢。锁定的任务只有在允许第三方活动启动到同一任务中时才能启动第三方活动。如果您尝试在新任务中启动活动,它将向logcat打印一条警告,用户将什么也看不到 好了,没有一般的方法锁定另一个任务

我曾经以设备所有者的身份激活我的应用程序。因此,我可以激活任务锁定。这与我希望Android的表现非常接近

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

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


提前感谢。

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


好了,没有一般的方法锁定另一个任务。另一个任务必须设计为锁定自身以响应某些意图。

锁定的任务只能启动第三方活动,前提是它们允许将它们启动到同一任务中。如果您尝试在新任务中启动活动,它将向logcat打印一条警告,用户将什么也看不到


好了,没有一般的方法锁定另一个任务。另一项任务必须设计为锁定自身,以响应某些意图。

我知道我参加聚会已经太迟了,但以下是我为让它为我工作所做的

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

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"};

它应该对你有用。

我知道我来不及参加聚会了,但以下是我为让它对我有用所做的

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

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"};

而且它应该适合您。

在我的情况下,我的应用程序是一个企业应用程序,需要锁定设备,因此使用kiosk模式。但我的应用程序需要调用电话和谷歌地图应用程序


不确定这是否是一个bug,但即使正确调用setLockTaskPackages(),Android startActivity()的某些版本也无法工作。这似乎是棒棒糖的问题。为了解决这个问题,我改用startActivityForResult。

在我的情况下,我的应用程序是一个企业应用程序,需要锁定设备,因此使用kiosk模式。但我的应用程序需要调用电话和谷歌地图应用程序

不确定这是否是一个bug,但即使正确调用setLockTaskPackages(),Android startActivity()的某些版本也无法工作。这似乎是棒棒糖的问题。为了解决这个问题,我改用startActivityForResult