diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 9c37df6..784617a 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -128,6 +128,9 @@
         final List<ShortcutInfo> pinnedShortcuts = shortcutManager.getPinnedShortcuts();
         final List<ShortcutInfo> updates = new ArrayList<>();
         for (ShortcutInfo info : pinnedShortcuts) {
+            if (info.isImmutable()) {
+                continue;
+            }
             final Intent shortcutIntent = info.getIntent();
             shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
             final ShortcutInfo updatedInfo = new ShortcutInfo.Builder(context, info.getId())
diff --git a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
index 1c1c14c..fe06790 100644
--- a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
@@ -78,4 +78,23 @@
         assertThat(flags & Intent.FLAG_ACTIVITY_CLEAR_TOP).isEqualTo(
                 Intent.FLAG_ACTIVITY_CLEAR_TOP);
     }
+
+    @Test
+    public void refreshExistingShortcuts_shouldNotUpdateImmutableShortcut() {
+        final String id = "test_shortcut_id";
+        final ShortcutInfo info = new ShortcutInfo.Builder(mContext, id)
+            .setShortLabel("test123")
+            .setIntent(new Intent(Intent.ACTION_DEFAULT))
+            .build();
+        info.addFlags(ShortcutInfo.FLAG_IMMUTABLE);
+        final List<ShortcutInfo> shortcuts = new ArrayList<>();
+        shortcuts.add(info);
+        ShadowShortcutManager.get().setPinnedShortcuts(shortcuts);
+
+        mSettingsInitialize.refreshExistingShortcuts(mContext);
+
+        final List<ShortcutInfo> updatedShortcuts =
+            ShadowShortcutManager.get().getLastUpdatedShortcuts();
+        assertThat(updatedShortcuts).isEmpty();
+    }
 }
