Passing activity token for identify sourceTask

System will launch activity into taskDisplayArea if can not
identify the sourceTask.  This CL passing the activity token
from CrossProfileApps#mContext as the calling activity and
add the new_task flag. That will make activity launches into
split with different tasks when switching profile.

Bug: 223405562
Test: split (A|B),switch the work/personal profile from split.
      atest CrossProfileAppsTest
Change-Id: I3bc713aa72985b93b42c288e23bec7f12dd6a01d
This commit is contained in:
Jeff Chang
2023-04-26 12:46:11 +00:00
parent c111807c2b
commit a7430a100f
2 changed files with 4 additions and 3 deletions

View File

@@ -27,6 +27,7 @@ import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.annotation.UserHandleAware;
import android.app.Activity;
import android.app.ActivityOptions;
import android.app.AppOpsManager.Mode;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
@@ -110,8 +111,8 @@ public class CrossProfileApps {
component,
targetUser.getIdentifier(),
true,
null,
null);
mContext.getActivityToken(),
ActivityOptions.makeBasic().toBundle());
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}

View File

@@ -147,7 +147,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
if (launchMainActivity) {
launchIntent.setAction(Intent.ACTION_MAIN);
launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
if (targetTask == null) {
if (targetTask == null || options != null) {
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
} else {