Android在任务锁定时运行另一个应用程序

时间:2016-08-13 13:05:57

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

我将我的应用程序设置为设备所有者,当我拨打startLockTask()时屏幕正在固定。我现在的问题,当我尝试使用此方法运行另一个应用程序时:

Intent i = getPackageManager().getLaunchIntentForPackage("com.example.test");
startActivityForResult(i,Intent.FLAG_ACTIVITY_NEW_TASK);

(什么都没发生) 我必须做些什么来让它运行?

编辑:我尝试添加

 dpm.setLockTaskPackages(deviceAdmin, new String[] { getPackageName() ,"com.example.test"});

它也没有发布。

3 个答案:

答案 0 :(得分:3)

您应该检查设备上安装了applicationId的应用。例如,在您的情况下, applicationId com.example.test。 如果未安装该应用,您可以将用户带到市场或让他们选择应用。

String packageName = "com.example.test";
.
.
.
Intent i = context.getPackageManager().getLaunchIntentForPackage(packageName);
if (i == null) {
    i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse("market://details?id=" + packageName));
    // Open app in google play store: 
    // i.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName));
}
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

答案 1 :(得分:0)

使用FLAG_ACTIVITY_NEW_TASK启动应用程序时,只需尝试使用startActivity。

Intent i = getPackageManager().getLaunchIntentForPackage("com.example.test");
startActivity(i);

我们不应在锁定任务模式下将FLAG_ACTIVITY_NEW_TASK与startActivityForResult一起使用。

答案 2 :(得分:0)

DPC必须将应用列入白名单,然后才能在锁定任务模式下使用它们。调用DevicePolicyManager.setLockTaskPackages()以将应用程序列入锁定任务模式的白名单,如以下示例所示:

// Whitelist two apps.

private static final String KIOSK_PACKAGE = "com.example.kiosk";

private static final String PLAYER_PACKAGE = "com.example.player";

private static final String[] APP_PACKAGES = {KIOSK_PACKAGE, PLAYER_PACKAGE};
// ...

Context context = getContext();

DevicePolicyManager dpm =
    (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName(context);
dpm.setLockTaskPackages(adminName, APP_PACKAGES);

您可以在应用清单文件中声明当系统以锁定任务模式运行时活动应如何表现。要使系统在锁定任务模式下自动运行您的活动,请将android:lockTaskMode属性设置为if_whitelisted

android:lockTaskMode="if_whitelisted">

取自https://developer.android.com/work/dpc/dedicated-devices/lock-task-mode#java