From e829bdd15dff4eda6238e1959c529ab4473c63dd Mon Sep 17 00:00:00 2001 From: LoveSy Date: Tue, 28 Dec 2021 23:39:23 +0800 Subject: [PATCH] Support adding icon after launcher changed (#1497) --- .../lsposed/lspd/service/LSPManagerService.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java index 8d1f539f..e17ffbc4 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java @@ -34,6 +34,7 @@ import android.content.AttributionSource; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.LauncherApps; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; @@ -307,10 +308,16 @@ public class LSPManagerService extends ILSPManagerService.Stub { .build(); for (var shortcutInfo : sm.getPinnedShortcuts()) { - if (SHORTCUT_ID.equals(shortcutInfo.getId())) { - Log.d(TAG, "shortcut exists, updating"); - sm.updateShortcuts(Collections.singletonList(shortcut)); - return; + if (SHORTCUT_ID.equals(shortcutInfo.getId()) && shortcutInfo.isPinned()) { + var shortcutIntent = sm.createShortcutResultIntent(shortcutInfo); + var request = (LauncherApps.PinItemRequest)shortcutIntent.getParcelableExtra(LauncherApps.EXTRA_PIN_ITEM_REQUEST); + var requestInfo = request.getShortcutInfo(); + // https://cs.android.com/android/platform/superproject/+/android-8.1.0_r1:frameworks/base/services/core/java/com/android/server/pm/ShortcutRequestPinProcessor.java;drc=4ad6b57700bef4c484021f49e018117046562e6b;l=337 + if (requestInfo.isPinned()) { + Log.d(TAG, "shortcut exists, updating"); + sm.updateShortcuts(Collections.singletonList(shortcut)); + return; + } } } var configManager = ConfigManager.getInstance();