From 23794d0bf0f8342f9b616ec0ec8a636340fa8db2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:50:12 +0000 Subject: [PATCH 1/3] Fix crash when Hide App Icon is enabled with dynamic shortcuts Co-authored-by: Goooler <10363352+Goooler@users.noreply.github.com> --- .../java/com/github/kr328/clash/AppSettingsActivity.kt | 4 ++++ .../java/com/github/kr328/clash/MainApplication.kt | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt index 24bbe52f28..290242390d 100644 --- a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt @@ -2,6 +2,7 @@ package com.github.kr328.clash import android.content.ComponentName import android.content.pm.PackageManager +import androidx.core.content.pm.ShortcutManagerCompat import com.github.kr328.clash.common.util.componentName import com.github.kr328.clash.design.AppSettingsDesign import com.github.kr328.clash.design.model.Behavior @@ -73,5 +74,8 @@ class AppSettingsActivity : BaseActivity(), Behavior { newState, PackageManager.DONT_KILL_APP ) + if (hide) { + ShortcutManagerCompat.removeAllDynamicShortcuts(this) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/github/kr328/clash/MainApplication.kt b/app/src/main/java/com/github/kr328/clash/MainApplication.kt index 5e0d72f2f1..42aa8a2096 100644 --- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt +++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt @@ -1,8 +1,10 @@ package com.github.kr328.clash import android.app.Application +import android.content.ComponentName import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import androidx.core.content.pm.ShortcutInfoCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat @@ -43,6 +45,14 @@ class MainApplication : Application() { } private fun setupShortcuts() { + val aliasState = packageManager.getComponentEnabledSetting( + ComponentName(this, mainActivityAlias) + ) + if (aliasState == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + ShortcutManagerCompat.removeAllDynamicShortcuts(this) + return + } + val icon = IconCompat.createWithResource(this, R.mipmap.ic_launcher) val flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS or From 88dc25ba5dd19a877db5e5e6e805d5824f719a3c Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 11:56:08 +0800 Subject: [PATCH 2/3] Add comments --- .../main/java/com/github/kr328/clash/AppSettingsActivity.kt | 3 ++- app/src/main/java/com/github/kr328/clash/MainApplication.kt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt index 290242390d..516489919f 100644 --- a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt @@ -75,7 +75,8 @@ class AppSettingsActivity : BaseActivity(), Behavior { PackageManager.DONT_KILL_APP ) if (hide) { + // Prevent launcher activity not found. ShortcutManagerCompat.removeAllDynamicShortcuts(this) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/github/kr328/clash/MainApplication.kt b/app/src/main/java/com/github/kr328/clash/MainApplication.kt index 42aa8a2096..6efdb335f4 100644 --- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt +++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt @@ -49,6 +49,7 @@ class MainApplication : Application() { ComponentName(this, mainActivityAlias) ) if (aliasState == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + // Prevent launcher activity not found. ShortcutManagerCompat.removeAllDynamicShortcuts(this) return } From 6869549c3e6842a22baac7cf9b0f93850f2f692c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 04:02:27 +0000 Subject: [PATCH 3/3] Guard against all disabled component states in setupShortcuts Agent-Logs-Url: https://github.com/Goooler/ClashMetaForAndroid/sessions/b7ffbbd6-0818-4a57-92ef-eb94bd6e358c Co-authored-by: Goooler <10363352+Goooler@users.noreply.github.com> --- app/src/main/java/com/github/kr328/clash/MainApplication.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/kr328/clash/MainApplication.kt b/app/src/main/java/com/github/kr328/clash/MainApplication.kt index 6efdb335f4..78528ef057 100644 --- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt +++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt @@ -48,8 +48,9 @@ class MainApplication : Application() { val aliasState = packageManager.getComponentEnabledSetting( ComponentName(this, mainActivityAlias) ) - if (aliasState == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { - // Prevent launcher activity not found. + if (aliasState != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && + aliasState != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + ) { ShortcutManagerCompat.removeAllDynamicShortcuts(this) return }