fix: restore Samsung Theme Park / Good Lock themed icons#31
Open
x-JOC wants to merge 1 commit into
Open
Conversation
Regression introduced by merging android-16.0.0_r2 (4767f8b "Merge tag 'android-16.0.0_r2' into 15-dev"). Before that merge, app icons fell back to ActivityInfo.loadIcon(PackageManager), which Samsung's SemApplicationPackageManager intercepts to return Theme Park / Good Lock themed icons. The Android 16 launcher3 rework replaced that path with loadPackageIcon(), which reads the icon straight from the app's resources via getResourcesForApplication() and therefore bypasses Samsung's theming. As a result, themed icons that rendered in Lawnchair 15 stopped appearing in 16-dev. Try the PackageManager icon APIs first (getActivityIcon, then getApplicationIcon), falling back to the existing resource-based path when the system returns the default icon or the lookup fails. Split out of the transparent-icon-backgrounds work so it can land atomically. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
x-JOC
added a commit
to x-JOC/platform_frameworks_libs_systemui
that referenced
this pull request
Jun 17, 2026
The Theme Park / Good Lock themed-icon fix (loadPackageIcon) is tracked separately in LawnchairLauncher#31 so this PR stays scoped to transparent icon backgrounds. Restores IconProvider.java to the base; the transparent-background changes (IconPreferences, BaseIconFactory) are unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restores Samsung Theme Park / Good Lock themed app icons, which regressed in Lawnchair 16.
Regression
loadPackageIconloads app icons straight from the app's resources viagetResourcesForApplication(), which bypasses Samsung's framework theming —SemApplicationPackageManagerinterceptsgetActivityIcon()/getApplicationIcon()to return Theme Park / Good Lock themed icons.This regressed in
4767f8b("Merge tag 'android-16.0.0_r2' into 15-dev"): before that merge, app icons fell back toActivityInfo.loadIcon(PackageManager)(which Samsung themes); the Android 16 launcher3 rework replaced that path with the resource-basedloadPackageIcon(). As a result, themed icons that rendered in Lawnchair 15 stopped appearing in 16-dev.Verified across the file history: at
4767f8btheActivityInfo.loadIcon(pm)fallback was removed andloadPackageIcon()(resource-based) introduced; the commit is in16-devbut not in the v15 line.Fix
Try the PackageManager icon APIs first (
getActivityIcon, thengetApplicationIcon), falling back to the existing resource-based path when the system returns the default icon (isDefaultApplicationIcon) or the lookup throws.Demo (before / after)
Same Samsung device, same Theme Park theme, icon source kept on System the whole time — only the build differs.
Samsung themed icons (this PR) — compare Lawnchair (NoFix) vs the fixed build:
Also visible in the same clip — transparent icon backgrounds (LawnchairLauncher/lawnchair#6890) — compare Lawnchair 15 vs the fixed build: v15 still draws the automatic white plate behind transparent / themed icons, the fixed build removes it. (Separate PR; shown here only because it's the same recording.)
Since the icon source never leaves System, both differences come from the code, not from a user setting.
https://github.com/user-attachments/assets/91d138ce-72cf-4775-9fe2-f03f685d6dbe
Notes
Split out of #30 to keep it atomic — that PR keeps the transparent-icon-background changes.
🤖 Generated with Claude Code