我使用this guide将我的应用激活为设备所有者。所以,我可以激活任务锁定。这与我希望Android的表现非常接近。
是否可以从设备拥有的应用中启动一个或多个特定的第三方应用,而无需停用任务锁?
如果没有,是否可以通过一些解决方法?我正在考虑停用任务锁,启动另一个应用程序,然后远程激活另一个应用程序的任务锁。
提前谢谢。
答案 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。