diff --git a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
index c871e9f..89ee19b 100644
--- a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
+++ b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
@@ -46,6 +46,7 @@
 import com.android.settings.R;
 import com.android.settings.Settings;
 import com.android.settings.Settings.TetherSettingsActivity;
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.gestures.OneHandedSettingsUtils;
 import com.android.settings.overlay.FeatureFactory;
@@ -127,7 +128,7 @@
                     return false;
                 }
                 final Intent shortcutIntent = createResultIntent(
-                        buildShortcutIntent(info),
+                        buildShortcutIntent(uiContext, info),
                         info, clickTarget.getTitle());
                 mHost.setResult(Activity.RESULT_OK, shortcutIntent);
                 logCreateShortcut(info);
@@ -210,10 +211,14 @@
                 info.activityInfo.name);
     }
 
-    private static Intent buildShortcutIntent(ResolveInfo info) {
-        return new Intent(SHORTCUT_PROBE)
+    private static Intent buildShortcutIntent(Context context, ResolveInfo info) {
+        Intent intent = new Intent(SHORTCUT_PROBE)
                 .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)
                 .setClassName(info.activityInfo.packageName, info.activityInfo.name);
+        if (ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) {
+            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+        }
+        return intent;
     }
 
     private static ShortcutInfo createShortcutInfo(Context context, Intent shortcutIntent,
@@ -277,8 +282,8 @@
                 ResolveInfo ri = context.getPackageManager().resolveActivity(si.getIntent(), 0);
 
                 if (ri != null) {
-                    updatedShortcuts.add(createShortcutInfo(context, buildShortcutIntent(ri), ri,
-                            si.getShortLabel()));
+                    updatedShortcuts.add(createShortcutInfo(context,
+                            buildShortcutIntent(context, ri), ri, si.getShortLabel()));
                 }
             }
         }
