From 26588fc2e5a3ac164746029bc7fbcab283872d91 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Fri, 20 May 2022 12:05:32 +0800 Subject: [PATCH] Fix the work profile's deep link problem - Settings shows the work Homepage while starting the work profile's icon, which is not allowed. - Clicking work apps' App info plays an unsmooth window transition animation. Fix: 233296965 Test: manual, robotest Change-Id: I3d12f6c59692c4a4cc718ea7022b60be50235abb --- .../android/settings/SettingsActivity.java | 3 ++- .../homepage/SettingsHomepageActivity.java | 27 ++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index f5fb26cae30..bb217a0d20a 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -433,7 +433,8 @@ public class SettingsActivity extends SettingsBaseActivity final UserManager um = getSystemService(UserManager.class); final UserInfo userInfo = um.getUserInfo(getUser().getIdentifier()); if (userInfo.isManagedProfile()) { - trampolineIntent.putExtra(EXTRA_USER_HANDLE, getUser()); + trampolineIntent.setClass(this, DeepLinkHomepageActivityInternal.class) + .putExtra(EXTRA_USER_HANDLE, getUser()); startActivityAsUser(trampolineIntent, um.getPrimaryUser().getUserHandle()); } else { startActivity(trampolineIntent); diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index c7bd3b5712e..3c72dd1c3b5 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -27,9 +27,11 @@ import android.app.ActivityManager; import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Intent; +import android.content.pm.UserInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.UserHandle; +import android.os.UserManager; import android.text.TextUtils; import android.util.ArraySet; import android.util.FeatureFlagUtils; @@ -153,11 +155,6 @@ public class SettingsHomepageActivity extends FragmentActivity implements return mMainFragment; } - /** Whether the activity is showing in two-pane */ - public boolean isTwoPane() { - return mIsTwoPane; - } - @Override public CategoryMixin getCategoryMixin() { return mCategoryMixin; @@ -166,10 +163,26 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this); + if (mIsEmbeddingActivityEnabled) { + final UserManager um = getSystemService(UserManager.class); + final UserInfo userInfo = um.getUserInfo(getUser().getIdentifier()); + if (userInfo.isManagedProfile()) { + final Intent intent = new Intent(getIntent()) + .setClass(this, DeepLinkHomepageActivityInternal.class) + .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT) + .putExtra(EXTRA_USER_HANDLE, getUser()); + intent.removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivityAsUser(intent, um.getPrimaryUser().getUserHandle()); + finish(); + return; + } + } + setupEdgeToEdge(); setContentView(R.layout.settings_homepage_container); - mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this); mSplitController = SplitController.getInstance(); mIsTwoPane = mSplitController.isActivityEmbedded(this); @@ -423,7 +436,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements // To prevent launchDeepLinkIntentToRight again for configuration change. intent.setAction(null); - targetIntent.setFlags(targetIntent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); + targetIntent.removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK); targetIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); // Sender of intent may want to send intent extra data to the destination of targetIntent.