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.