From b9c3ca524c7b8c112ddfaf454ac3101395c75d7b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:58:52 +0000 Subject: [PATCH 01/13] Update hideAppIcon default to check mainActivityAlias enabled state Co-authored-by: Goooler <10363352+Goooler@users.noreply.github.com> --- .../java/com/github/kr328/clash/design/store/UiStore.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 16f9dbdf6d..ba643f75e7 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -1,6 +1,8 @@ package com.github.kr328.clash.design.store +import android.content.ComponentName import android.content.Context +import android.content.pm.PackageManager import com.github.kr328.clash.common.store.Store import com.github.kr328.clash.common.store.asStoreProvider import com.github.kr328.clash.core.model.ProxySort @@ -27,7 +29,9 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", - defaultValue = false + defaultValue = context.packageManager.getComponentEnabledSetting( + ComponentName(context, "${context.packageName}.$MAIN_ACTIVITY_ALIAS") + ) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED, ) var hideFromRecents: Boolean by store.boolean( @@ -74,5 +78,6 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" + private const val MAIN_ACTIVITY_ALIAS = "MainActivityAlias" } } \ No newline at end of file From e8899069db4ca2892773425b9cb8462ce72eaafd Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:02:22 +0800 Subject: [PATCH 02/13] Reuse hideAppIcon flag --- .../java/com/github/kr328/clash/MainApplication.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 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 78528ef057..4f9cac1e3c 100644 --- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt +++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt @@ -12,6 +12,7 @@ import com.github.kr328.clash.common.Global import com.github.kr328.clash.common.compat.currentProcessName import com.github.kr328.clash.common.constants.Intents import com.github.kr328.clash.common.log.Log +import com.github.kr328.clash.design.store.UiStore import com.github.kr328.clash.remote.Remote import com.github.kr328.clash.service.util.sendServiceRecreated import com.github.kr328.clash.util.clashDir @@ -45,12 +46,9 @@ class MainApplication : Application() { } private fun setupShortcuts() { - val aliasState = packageManager.getComponentEnabledSetting( - ComponentName(this, mainActivityAlias) - ) - if (aliasState != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && - aliasState != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - ) { + val hideAppIcon = UiStore(this).hideAppIcon + if (hideAppIcon) { + // Prevent launcher activity not found. ShortcutManagerCompat.removeAllDynamicShortcuts(this) return } From 0327277d2803fb3019bdf37d916333a6d9c53eb9 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:05:19 +0800 Subject: [PATCH 03/13] Reuse mainActivityAlias --- .../main/java/com/github/kr328/clash/AppSettingsActivity.kt | 1 + app/src/main/java/com/github/kr328/clash/MainActivity.kt | 2 -- .../main/java/com/github/kr328/clash/design/store/UiStore.kt | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) 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 516489919f..c9088bbf5e 100644 --- a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt @@ -6,6 +6,7 @@ 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 +import com.github.kr328.clash.design.store.UiStore.Companion.mainActivityAlias import com.github.kr328.clash.service.store.ServiceStore import com.github.kr328.clash.util.ApplicationObserver import kotlinx.coroutines.isActive diff --git a/app/src/main/java/com/github/kr328/clash/MainActivity.kt b/app/src/main/java/com/github/kr328/clash/MainActivity.kt index c4237906b2..62f2a1aa7c 100644 --- a/app/src/main/java/com/github/kr328/clash/MainActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/MainActivity.kt @@ -159,5 +159,3 @@ class MainActivity : BaseActivity() { } } } - -val mainActivityAlias = "${MainActivity::class.java.name}Alias" \ No newline at end of file diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index ba643f75e7..c258adb045 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -30,7 +30,7 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", defaultValue = context.packageManager.getComponentEnabledSetting( - ComponentName(context, "${context.packageName}.$MAIN_ACTIVITY_ALIAS") + ComponentName(context, context.mainActivityAlias) ) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED, ) @@ -78,6 +78,6 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" - private const val MAIN_ACTIVITY_ALIAS = "MainActivityAlias" + val Context.mainActivityAlias: String get() = "$packageName.MainActivityAlias" } } \ No newline at end of file From 85a18d77b14432f51af899d0776c1bb222185051 Mon Sep 17 00:00:00 2001 From: Zongle Wang Date: Fri, 10 Apr 2026 15:15:54 +0800 Subject: [PATCH 04/13] Update design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../main/java/com/github/kr328/clash/design/store/UiStore.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index c258adb045..221a50b413 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -31,7 +31,10 @@ class UiStore(context: Context) { key = "hide_app_icon", defaultValue = context.packageManager.getComponentEnabledSetting( ComponentName(context, context.mainActivityAlias) - ) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + ).let { state -> + state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && + state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + }, ) var hideFromRecents: Boolean by store.boolean( From 509e0c81591daf3c09b39f47f5fdf31a092ca7ad Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:17:22 +0800 Subject: [PATCH 05/13] Remove imports --- app/src/main/java/com/github/kr328/clash/MainApplication.kt | 2 -- 1 file changed, 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 4f9cac1e3c..8cd9cbc74b 100644 --- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt +++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt @@ -1,10 +1,8 @@ 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 From eb1245b794797cfaac721821b5c4b3d5d65c4f4e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 07:21:51 +0000 Subject: [PATCH 06/13] Defer hideAppIcon default value computation to read time Agent-Logs-Url: https://github.com/Goooler/ClashMetaForAndroid/sessions/69047dd6-90d5-4bb0-9b54-04e77f35c156 Co-authored-by: Goooler <10363352+Goooler@users.noreply.github.com> --- .../github/kr328/clash/common/store/Providers.kt | 4 ++++ .../com/github/kr328/clash/common/store/Store.kt | 16 ++++++++++++++++ .../kr328/clash/common/store/StoreProvider.kt | 2 ++ .../github/kr328/clash/design/store/UiStore.kt | 12 +++++++----- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt b/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt index dce74fcc71..34e0cb513e 100644 --- a/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt +++ b/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt @@ -53,6 +53,10 @@ class SharedPreferenceProvider(private val preferences: SharedPreferences) : Sto putBoolean(key, value) } } + + override fun contains(key: String): Boolean { + return preferences.contains(key) + } } fun SharedPreferences.asStoreProvider(): StoreProvider { diff --git a/common/src/main/java/com/github/kr328/clash/common/store/Store.kt b/common/src/main/java/com/github/kr328/clash/common/store/Store.kt index 4429fed68a..c424c46102 100644 --- a/common/src/main/java/com/github/kr328/clash/common/store/Store.kt +++ b/common/src/main/java/com/github/kr328/clash/common/store/Store.kt @@ -68,6 +68,22 @@ class Store(val provider: StoreProvider) { } } + fun boolean(key: String, defaultValueProvider: () -> Boolean): Delegate { + return object : Delegate { + override fun getValue(thisRef: Any?, property: KProperty<*>): Boolean { + return if (provider.contains(key)) { + provider.getBoolean(key, false) + } else { + defaultValueProvider() + } + } + + override fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) { + provider.setBoolean(key, value) + } + } + } + fun > enum(key: String, defaultValue: T, values: Array): Delegate { return object : Delegate { override fun getValue(thisRef: Any?, property: KProperty<*>): T { diff --git a/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt b/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt index 1f01f77f3e..095af45c55 100644 --- a/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt +++ b/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt @@ -15,4 +15,6 @@ interface StoreProvider { fun getBoolean(key: String, defaultValue: Boolean): Boolean fun setBoolean(key: String, value: Boolean) + + fun contains(key: String): Boolean } \ No newline at end of file diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 221a50b413..45f11cb3c8 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -29,11 +29,13 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", - defaultValue = context.packageManager.getComponentEnabledSetting( - ComponentName(context, context.mainActivityAlias) - ).let { state -> - state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && - state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + defaultValueProvider = { + context.packageManager.getComponentEnabledSetting( + ComponentName(context, context.mainActivityAlias) + ).let { state -> + state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && + state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + } }, ) From c779e118b31e8a9aa64f6e20ead5c0f7d54a7829 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:22:49 +0800 Subject: [PATCH 07/13] Revert "Defer hideAppIcon default value computation to read time" This reverts commit eb1245b794797cfaac721821b5c4b3d5d65c4f4e. --- .../github/kr328/clash/common/store/Providers.kt | 4 ---- .../com/github/kr328/clash/common/store/Store.kt | 16 ---------------- .../kr328/clash/common/store/StoreProvider.kt | 2 -- .../github/kr328/clash/design/store/UiStore.kt | 12 +++++------- 4 files changed, 5 insertions(+), 29 deletions(-) diff --git a/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt b/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt index 34e0cb513e..dce74fcc71 100644 --- a/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt +++ b/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt @@ -53,10 +53,6 @@ class SharedPreferenceProvider(private val preferences: SharedPreferences) : Sto putBoolean(key, value) } } - - override fun contains(key: String): Boolean { - return preferences.contains(key) - } } fun SharedPreferences.asStoreProvider(): StoreProvider { diff --git a/common/src/main/java/com/github/kr328/clash/common/store/Store.kt b/common/src/main/java/com/github/kr328/clash/common/store/Store.kt index c424c46102..4429fed68a 100644 --- a/common/src/main/java/com/github/kr328/clash/common/store/Store.kt +++ b/common/src/main/java/com/github/kr328/clash/common/store/Store.kt @@ -68,22 +68,6 @@ class Store(val provider: StoreProvider) { } } - fun boolean(key: String, defaultValueProvider: () -> Boolean): Delegate { - return object : Delegate { - override fun getValue(thisRef: Any?, property: KProperty<*>): Boolean { - return if (provider.contains(key)) { - provider.getBoolean(key, false) - } else { - defaultValueProvider() - } - } - - override fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) { - provider.setBoolean(key, value) - } - } - } - fun > enum(key: String, defaultValue: T, values: Array): Delegate { return object : Delegate { override fun getValue(thisRef: Any?, property: KProperty<*>): T { diff --git a/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt b/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt index 095af45c55..1f01f77f3e 100644 --- a/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt +++ b/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt @@ -15,6 +15,4 @@ interface StoreProvider { fun getBoolean(key: String, defaultValue: Boolean): Boolean fun setBoolean(key: String, value: Boolean) - - fun contains(key: String): Boolean } \ No newline at end of file diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 45f11cb3c8..221a50b413 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -29,13 +29,11 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", - defaultValueProvider = { - context.packageManager.getComponentEnabledSetting( - ComponentName(context, context.mainActivityAlias) - ).let { state -> - state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && - state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - } + defaultValue = context.packageManager.getComponentEnabledSetting( + ComponentName(context, context.mainActivityAlias) + ).let { state -> + state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && + state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT }, ) From f6aa10119b111f66ac16b1893c08fad3467841c5 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:24:47 +0800 Subject: [PATCH 08/13] Cleanup --- 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 8cd9cbc74b..60c890efa4 100644 --- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt +++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt @@ -21,6 +21,8 @@ import com.github.kr328.clash.design.R as DesignR @Suppress("unused") class MainApplication : Application() { + private val uiStore by lazy(LazyThreadSafetyMode.NONE) { UiStore(this) } + override fun attachBaseContext(base: Context?) { super.attachBaseContext(base) @@ -44,8 +46,7 @@ class MainApplication : Application() { } private fun setupShortcuts() { - val hideAppIcon = UiStore(this).hideAppIcon - if (hideAppIcon) { + if (uiStore.hideAppIcon) { // Prevent launcher activity not found. ShortcutManagerCompat.removeAllDynamicShortcuts(this) return From df96231120c3e2f1c9ae3664c38fb4c4b67e345c Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:38:20 +0800 Subject: [PATCH 09/13] Rename mainActivityAlias --- .../main/java/com/github/kr328/clash/AppSettingsActivity.kt | 4 ++-- .../main/java/com/github/kr328/clash/design/store/UiStore.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 c9088bbf5e..c741200708 100644 --- a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt @@ -6,7 +6,7 @@ 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 -import com.github.kr328.clash.design.store.UiStore.Companion.mainActivityAlias +import com.github.kr328.clash.design.store.UiStore.Companion.MAIN_ACTIVITY_ALIAS import com.github.kr328.clash.service.store.ServiceStore import com.github.kr328.clash.util.ApplicationObserver import kotlinx.coroutines.isActive @@ -71,7 +71,7 @@ class AppSettingsActivity : BaseActivity(), Behavior { PackageManager.COMPONENT_ENABLED_STATE_ENABLED } packageManager.setComponentEnabledSetting( - ComponentName(this, mainActivityAlias), + ComponentName(this, MAIN_ACTIVITY_ALIAS), newState, PackageManager.DONT_KILL_APP ) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 221a50b413..977e20c64f 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -30,7 +30,7 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", defaultValue = context.packageManager.getComponentEnabledSetting( - ComponentName(context, context.mainActivityAlias) + ComponentName(context, MAIN_ACTIVITY_ALIAS) ).let { state -> state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT @@ -81,6 +81,6 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" - val Context.mainActivityAlias: String get() = "$packageName.MainActivityAlias" + const val MAIN_ACTIVITY_ALIAS: String = "com.github.metacubex.clash.MainActivityAlias" } } \ No newline at end of file From 33db1dd120ed06f81fbe13bc87a4a316abfbd015 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:51:38 +0800 Subject: [PATCH 10/13] Revert "Rename mainActivityAlias" This reverts commit df96231120c3e2f1c9ae3664c38fb4c4b67e345c. --- .../main/java/com/github/kr328/clash/AppSettingsActivity.kt | 4 ++-- .../main/java/com/github/kr328/clash/design/store/UiStore.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 c741200708..c9088bbf5e 100644 --- a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt @@ -6,7 +6,7 @@ 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 -import com.github.kr328.clash.design.store.UiStore.Companion.MAIN_ACTIVITY_ALIAS +import com.github.kr328.clash.design.store.UiStore.Companion.mainActivityAlias import com.github.kr328.clash.service.store.ServiceStore import com.github.kr328.clash.util.ApplicationObserver import kotlinx.coroutines.isActive @@ -71,7 +71,7 @@ class AppSettingsActivity : BaseActivity(), Behavior { PackageManager.COMPONENT_ENABLED_STATE_ENABLED } packageManager.setComponentEnabledSetting( - ComponentName(this, MAIN_ACTIVITY_ALIAS), + ComponentName(this, mainActivityAlias), newState, PackageManager.DONT_KILL_APP ) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 977e20c64f..221a50b413 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -30,7 +30,7 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", defaultValue = context.packageManager.getComponentEnabledSetting( - ComponentName(context, MAIN_ACTIVITY_ALIAS) + ComponentName(context, context.mainActivityAlias) ).let { state -> state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT @@ -81,6 +81,6 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" - const val MAIN_ACTIVITY_ALIAS: String = "com.github.metacubex.clash.MainActivityAlias" + val Context.mainActivityAlias: String get() = "$packageName.MainActivityAlias" } } \ No newline at end of file From 1ca7e61258a4c6f08889e68175ee4ecda0de00c5 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:57:06 +0800 Subject: [PATCH 11/13] Add .class --- .../main/java/com/github/kr328/clash/design/store/UiStore.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 221a50b413..0a2f333f8b 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -81,6 +81,6 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" - val Context.mainActivityAlias: String get() = "$packageName.MainActivityAlias" + val Context.mainActivityAlias: String get() = "$packageName.MainActivityAlias.class" } } \ No newline at end of file From cdf537d7b86d860c2cd4f6e03b61d59b59d72e07 Mon Sep 17 00:00:00 2001 From: Goooler Date: Fri, 10 Apr 2026 15:59:45 +0800 Subject: [PATCH 12/13] Cleanup --- .../github/kr328/clash/AppSettingsActivity.kt | 2 +- .../github/kr328/clash/design/store/UiStore.kt | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) 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 c9088bbf5e..7348642d7b 100644 --- a/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt @@ -71,7 +71,7 @@ class AppSettingsActivity : BaseActivity(), Behavior { PackageManager.COMPONENT_ENABLED_STATE_ENABLED } packageManager.setComponentEnabledSetting( - ComponentName(this, mainActivityAlias), + mainActivityAlias, newState, PackageManager.DONT_KILL_APP ) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 0a2f333f8b..2af4d8e6c2 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -29,12 +29,11 @@ class UiStore(context: Context) { var hideAppIcon: Boolean by store.boolean( key = "hide_app_icon", - defaultValue = context.packageManager.getComponentEnabledSetting( - ComponentName(context, context.mainActivityAlias) - ).let { state -> - state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && - state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - }, + defaultValue = context.packageManager.getComponentEnabledSetting(context.mainActivityAlias) + .let { state -> + state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED && + state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + }, ) var hideFromRecents: Boolean by store.boolean( @@ -81,6 +80,11 @@ class UiStore(context: Context) { companion object { private const val PREFERENCE_NAME = "ui" - val Context.mainActivityAlias: String get() = "$packageName.MainActivityAlias.class" + + val Context.mainActivityAlias: ComponentName + get() = ComponentName( + this, + "$packageName.MainActivityAlias.class" + ) } } \ No newline at end of file From 0e43e0b7cbe2d766da4c880628bb1b67046cb5b0 Mon Sep 17 00:00:00 2001 From: Zongle Wang Date: Fri, 10 Apr 2026 16:15:25 +0800 Subject: [PATCH 13/13] Update design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt --- .../main/java/com/github/kr328/clash/design/store/UiStore.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt index 2af4d8e6c2..ddc9d600fd 100644 --- a/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt +++ b/design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt @@ -82,9 +82,6 @@ class UiStore(context: Context) { private const val PREFERENCE_NAME = "ui" val Context.mainActivityAlias: ComponentName - get() = ComponentName( - this, - "$packageName.MainActivityAlias.class" - ) + get() = ComponentName(this, "com.github.kr328.clash.MainActivityAlias") } } \ No newline at end of file