From cdb28a0894ca2f01181c93e371eb4440e695a142 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:45:56 +0800 Subject: [PATCH] Support hiding app from Recents screen Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Goooler <10363352+Goooler@users.noreply.github.com> Co-authored-by: Goooler Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../main/java/com/github/kr328/clash/BaseActivity.kt | 7 +++++++ .../github/kr328/clash/design/AppSettingsDesign.kt | 11 +++++++++++ .../com/github/kr328/clash/design/store/UiStore.kt | 5 +++++ design/src/main/res/drawable/ic_baseline_stack.xml | 10 ++++++++++ design/src/main/res/values-zh/strings.xml | 2 ++ design/src/main/res/values/strings.xml | 2 ++ 6 files changed, 37 insertions(+) create mode 100644 design/src/main/res/drawable/ic_baseline_stack.xml diff --git a/app/src/main/java/com/github/kr328/clash/BaseActivity.kt b/app/src/main/java/com/github/kr328/clash/BaseActivity.kt index 400dfb2b06..b181713e13 100644 --- a/app/src/main/java/com/github/kr328/clash/BaseActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/BaseActivity.kt @@ -1,11 +1,13 @@ package com.github.kr328.clash +import android.app.ActivityManager import android.content.res.Configuration import android.os.Build import android.os.Bundle import android.view.View import androidx.activity.result.contract.ActivityResultContract import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.getSystemService import com.github.kr328.clash.common.compat.isAllowForceDarkCompat import com.github.kr328.clash.common.compat.isLightNavigationBarCompat import com.github.kr328.clash.common.compat.isLightStatusBarsCompat @@ -88,6 +90,11 @@ abstract class BaseActivity> : AppCompatActivity(), super.onCreate(savedInstanceState) applyDayNight() + // Apply excludeFromRecents setting to all app tasks. + checkNotNull(getSystemService()).appTasks.forEach { task -> + task.setExcludeFromRecents(uiStore.hideFromRecents) + } + launch { main() } diff --git a/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt b/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt index fdef937d58..dc43d00a29 100644 --- a/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt +++ b/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt @@ -77,6 +77,17 @@ class AppSettingsDesign( } } + switch( + value = uiStore::hideFromRecents, + icon = R.drawable.ic_baseline_stack, + title = R.string.hide_from_recents_title, + summary = R.string.hide_from_recents_desc, + ) { + listener = OnChangedListener { + requests.trySend(Request.ReCreateAllActivities) + } + } + category(R.string.service) switch( 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 d6c037b40c..16f9dbdf6d 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,6 +30,11 @@ class UiStore(context: Context) { defaultValue = false ) + var hideFromRecents: Boolean by store.boolean( + key = "hide_from_recents", + defaultValue = false, + ) + var proxyExcludeNotSelectable by store.boolean( key = "proxy_exclude_not_selectable", defaultValue = false, diff --git a/design/src/main/res/drawable/ic_baseline_stack.xml b/design/src/main/res/drawable/ic_baseline_stack.xml new file mode 100644 index 0000000000..7c6b0a5594 --- /dev/null +++ b/design/src/main/res/drawable/ic_baseline_stack.xml @@ -0,0 +1,10 @@ + + + diff --git a/design/src/main/res/values-zh/strings.xml b/design/src/main/res/values-zh/strings.xml index e8145bf64b..48daff432b 100644 --- a/design/src/main/res/values-zh/strings.xml +++ b/design/src/main/res/values-zh/strings.xml @@ -39,6 +39,8 @@ 全局模式 隐藏应用图标 可以在拨号盘输入 *#*#252746382#*#* 打开应用 + 从最近任务隐藏 + 在最近任务中隐藏应用 历史 从文件导入 从 URL 导入 diff --git a/design/src/main/res/values/strings.xml b/design/src/main/res/values/strings.xml index 786131255c..518af90d0d 100644 --- a/design/src/main/res/values/strings.xml +++ b/design/src/main/res/values/strings.xml @@ -346,6 +346,8 @@ Hide App Icon You can dial *#*#252746382#*#* to open this App + Hide from Recents + Hide app from the Recent apps screen Camera access is restricted. Please enable it in Settings. An unhandled system exception occurred.