From addc128f7d4344e7fb6ec1237922062d1437b41f Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sat, 1 Nov 2025 14:55:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E9=80=89=E6=8B=A9=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E9=A2=84=E8=A7=81=E5=BC=8F=E8=BF=94=E5=9B=9E=E5=8A=A8=E7=94=BB?= =?UTF-8?q?=20#183?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/base/BaseActivity.kt | 14 ++++++++++++++ .../main/java/io/legado/app/constant/PreferKey.kt | 1 + .../java/io/legado/app/help/config/AppConfig.kt | 6 ++++++ .../io/legado/app/ui/config/ThemeConfigFragment.kt | 4 ++++ app/src/main/res/xml/pref_config_theme.xml | 7 +++++++ 5 files changed, 32 insertions(+) diff --git a/app/src/main/java/io/legado/app/base/BaseActivity.kt b/app/src/main/java/io/legado/app/base/BaseActivity.kt index 918f3e1e9..59b2f9a25 100644 --- a/app/src/main/java/io/legado/app/base/BaseActivity.kt +++ b/app/src/main/java/io/legado/app/base/BaseActivity.kt @@ -12,6 +12,7 @@ import android.view.Menu import android.view.MenuItem import android.view.MotionEvent import android.view.View +import android.window.OnBackInvokedDispatcher import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.graphics.drawable.toDrawable @@ -81,6 +82,19 @@ abstract class BaseActivity( initTheme() window.decorView.disableAutoFill() AppContextWrapper.applyLocaleAndFont(this) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val enable = !AppConfig.isPredictiveBackEnabled + if (enable) { + onBackInvokedDispatcher.registerOnBackInvokedCallback( + OnBackInvokedDispatcher.PRIORITY_DEFAULT + ) { + onBackPressedDispatcher.onBackPressed() + } + } else { + //不注册才是启用 + } + } + super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 3a9f0e5f0..4d4d3adef 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -209,4 +209,5 @@ object PreferKey { const val colorImage = "colorImage" const val bookshelfRefreshingLimit = "bookshelfRefreshingLimit" const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange" + const val isPredictiveBackEnabled = "isPredictiveBackEnabled" } diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index ef92de310..69d09cec3 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -846,5 +846,11 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { set(value) { appCtx.putPrefBoolean(PreferKey.systemMediaControlCompatibilityChange, value) } + + var isPredictiveBackEnabled: Boolean + get() = appCtx.getPrefBoolean(PreferKey.isPredictiveBackEnabled, true) + set(value) { + appCtx.putPrefBoolean(PreferKey.isPredictiveBackEnabled, value) + } } diff --git a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt index 620ceb326..312c410bb 100644 --- a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt @@ -185,6 +185,10 @@ class ThemeConfigFragment : PreferenceFragmentCompat(), }, 100) } + PreferKey.isPredictiveBackEnabled -> { + toastOnUi("重启以应用") + } + PreferKey.cPrimary -> { val color = getPrefInt(key, ThemeStore.primaryColor(requireContext())) ThemeStore.editTheme(requireContext()) diff --git a/app/src/main/res/xml/pref_config_theme.xml b/app/src/main/res/xml/pref_config_theme.xml index 579461aeb..fe7d23cb9 100644 --- a/app/src/main/res/xml/pref_config_theme.xml +++ b/app/src/main/res/xml/pref_config_theme.xml @@ -138,6 +138,13 @@ app:entries="@array/default_home_page" app:entryValues="@array/default_home_page_value" /> + + +