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
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index f5fb26c..bb217a0 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -433,7 +433,8 @@
             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 c7bd3b5..3c72dd1 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -27,9 +27,11 @@
 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 @@
         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 @@
     @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 @@
         // 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.