From 2c21aad23665092b5bb61190373cfff69aede4bf Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Tue, 31 Mar 2026 14:29:06 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feat:=20try=20hook=20paste=20toast=20?= =?UTF-8?q?=E5=89=AA=E8=B4=B4=E6=9D=BF=E7=B2=98=E8=B4=B4=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=20hook=20=E4=B8=8D=E7=AE=A1=E4=BA=86=E5=86=99=E5=A4=9A?= =?UTF-8?q?=E5=B0=91=20commit=20=E5=A4=9A=E5=B0=91=E5=85=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/values-zh-rCN/strings_app.xml | 6 ++ .../core/src/main/res/values/strings_app.xml | 9 ++ .../core/src/main/res/xml/lbe_security.xml | 30 ++++++ .../sevtinge/hyperceiler/libhook/app/Lbe.java | 6 ++ .../libhook/rules/lbe/PasteToast.java | 94 +++++++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java diff --git a/library/core/src/main/res/values-zh-rCN/strings_app.xml b/library/core/src/main/res/values-zh-rCN/strings_app.xml index 3db2d16809..3effbf4a8e 100644 --- a/library/core/src/main/res/values-zh-rCN/strings_app.xml +++ b/library/core/src/main/res/values-zh-rCN/strings_app.xml @@ -970,6 +970,12 @@ 权限管理服务 禁止自动关闭自启动 + 剪贴板读取提示 + 自定义剪贴板读取提示 + 将关闭按钮改为关闭本次的提示 + 自定义关闭按钮名称 + 太小的按钮名称会导致难以点击 + 提示不透明度 互联互通服务 解锁小米妙享 diff --git a/library/core/src/main/res/values/strings_app.xml b/library/core/src/main/res/values/strings_app.xml index 25f4c370c2..03874a64f9 100644 --- a/library/core/src/main/res/values/strings_app.xml +++ b/library/core/src/main/res/values/strings_app.xml @@ -1032,6 +1032,15 @@ Permissions Disable auto-shutdown of auto start + Paste toast + Custom paste toast + Hook close button into close toast + Custom close button text + Text that is too small will affect clicking + Toast opacity + + + Interconnectivity services Unlock Device interconnection diff --git a/library/core/src/main/res/xml/lbe_security.xml b/library/core/src/main/res/xml/lbe_security.xml index 97aa6667bb..6ddb71a7d5 100644 --- a/library/core/src/main/res/xml/lbe_security.xml +++ b/library/core/src/main/res/xml/lbe_security.xml @@ -27,4 +27,34 @@ android:title="@string/lbe_auto_start" /> + + + + + + + + + \ No newline at end of file diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java index 21dd56d3a4..3a74974b50 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java @@ -22,6 +22,8 @@ import com.sevtinge.hyperceiler.common.utils.PrefsBridge; import com.sevtinge.hyperceiler.libhook.base.BaseLoad; import com.sevtinge.hyperceiler.libhook.rules.lbe.AutoStart; +import com.sevtinge.hyperceiler.libhook.rules.lbe.PasteToast; + @HookBase(targetPackage = "com.lbe.security.miui") public class Lbe extends BaseLoad { @@ -29,5 +31,9 @@ public class Lbe extends BaseLoad { @Override public void onPackageLoaded() { initHook(new AutoStart(), PrefsBridge.getBoolean("lbe_auto_start")); + + // paste toast + initHook(new PasteToast(), PrefsBridge.getBoolean("lbe_paste_toast")); + } } diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java new file mode 100644 index 0000000000..0cc07051b7 --- /dev/null +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java @@ -0,0 +1,94 @@ +/* + * This file is part of HyperCeiler. + + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + + * Copyright (C) 2023-2026 HyperCeiler Contributions + */ +/** + * 优化剪贴板粘贴提示 Toast + * + * @author LuoYunXi0407 + */ +package com.sevtinge.hyperceiler.libhook.rules.lbe; + +import android.content.Context; +import android.view.View; +import android.widget.TextView; + +import com.sevtinge.hyperceiler.common.utils.PrefsBridge; +import com.sevtinge.hyperceiler.libhook.base.BaseHook; +import com.sevtinge.hyperceiler.libhook.callback.IMethodHook; + +import java.util.Objects; + +import io.github.kyuubiran.ezxhelper.xposed.common.HookParam; + +public class PasteToast extends BaseHook { + @Override + public void init() { + findAndHookMethod( + "com.lbe.security.utility.ToastUtil", + "initToastView", + String.class, + int.class, + new IMethodHook() { + + @Override + public void after(HookParam param) { + if(param == null) return;; + Object[] args = param.getArgs(); + int type = (int) args[1]; + if (type != 1) return; + + View view = (View) param.getResult(); + if (view == null) return; + view.setAlpha(PrefsBridge.getFloat("prefs_key_lbe_paste_toast_custom_toast_opacity", 100)/100); + + + Context context = view.getContext(); + + int closeId = context.getResources() + .getIdentifier("closeButton", "id", "android"); + + View closeBtn = view.findViewById(closeId); + if (!(closeBtn instanceof TextView)) return; + + TextView btn = (TextView) closeBtn; + String btnStr = PrefsBridge.getString("prefs_key_lbe_paste_toast_custom_close_button_text_custom", ""); + if(!Objects.equals(btnStr, "")) + { + btn.setText(btnStr); + } + + if(PrefsBridge.getBoolean("prefs_key_lbe_paste_toast_custom_close_button_to_close", false)) { + btn.setOnClickListener(v -> { + View root = view; + root.setVisibility(View.GONE); + + root.setAlpha(0f); + + try { + Object wm = context.getSystemService(Context.WINDOW_SERVICE); + callMethod(wm, "removeView", root); + } catch (Throwable ignored) { + } + + }); + } + } + } + ); + } +} From 4f2df66a8c7865717bfeb072d1578b48957f9f19 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 02:09:49 +0800 Subject: [PATCH 02/13] =?UTF-8?q?fix:=20.1f=20->=20%.1f=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=A8=AA=E5=B1=8F=E5=AF=BC=E8=88=AA=E6=A0=8F=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/core/src/main/res/xml/system_ui_navigation.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/core/src/main/res/xml/system_ui_navigation.xml b/library/core/src/main/res/xml/system_ui_navigation.xml index 90209ebdf9..8effa9c42a 100644 --- a/library/core/src/main/res/xml/system_ui_navigation.xml +++ b/library/core/src/main/res/xml/system_ui_navigation.xml @@ -52,7 +52,7 @@ android:key="prefs_key_system_ui_navigation_custom_height_land" android:title="@string/system_ui_navigation_custom_height_land" app:dividerValue="10" - app:format=".1f dp" + app:format="%.1f dp" app:maxValue="1000" app:minValue="1" app:showSeekBarValue="true" From 561032bda960ac47f4ee5a5dbccca7a8bbf589ea Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 02:12:00 +0800 Subject: [PATCH 03/13] =?UTF-8?q?feat:=20=E5=85=B6=E5=AE=9E=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E5=8F=AF=E4=BB=A5=E5=92=8C=E6=88=91=E4=B8=80=E6=A0=B7?= =?UTF-8?q?=E6=98=AF=200=20=E5=90=A7=EF=BC=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/core/src/main/res/xml/system_ui_navigation.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/core/src/main/res/xml/system_ui_navigation.xml b/library/core/src/main/res/xml/system_ui_navigation.xml index 8effa9c42a..a081622184 100644 --- a/library/core/src/main/res/xml/system_ui_navigation.xml +++ b/library/core/src/main/res/xml/system_ui_navigation.xml @@ -42,7 +42,7 @@ app:dividerValue="10" app:format="%.1f dp" app:maxValue="1000" - app:minValue="1" + app:minValue="0" app:showSeekBarValue="true" app:stepValue="1" /> @@ -54,7 +54,7 @@ app:dividerValue="10" app:format="%.1f dp" app:maxValue="1000" - app:minValue="1" + app:minValue="0" app:showSeekBarValue="true" app:stepValue="1" /> @@ -66,7 +66,7 @@ app:dividerValue="10" app:format="%.1f dp" app:maxValue="1000" - app:minValue="1" + app:minValue="0" app:showSeekBarValue="true" app:stepValue="1" /> @@ -78,7 +78,7 @@ app:dividerValue="10" app:format="%.1f dp" app:maxValue="1000" - app:minValue="1" + app:minValue="0" app:showSeekBarValue="true" app:stepValue="1" /> From 336432067a12e8dd84f2eaefa56d08235e6db801 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 03:27:59 +0800 Subject: [PATCH 04/13] =?UTF-8?q?opt:=20opt=20EN=20translation=20&=20CN=20?= =?UTF-8?q?string=20=E3=80=8C=E8=BE=93=E5=85=A5=E6=B3=95=E5=85=A8=E9=9D=A2?= =?UTF-8?q?=E5=B1=8F=E4=BC=98=E5=8C=96=E3=80=8D=E5=B0=8F=E7=B1=B3=E7=BB=99?= =?UTF-8?q?=E5=AE=83=E7=9A=84=E8=8B=B1=E8=AF=AD=E5=90=8D=E5=8F=AB=E5=81=9A?= =?UTF-8?q?=E3=80=8CEnhance=20keyboard=E3=80=8D=EF=BC=8C=E5=BA=94=E4=BF=9D?= =?UTF-8?q?=E7=95=99=20btw=20=E5=B8=B8=E7=94=A8=E8=AF=AD=E5=89=AA=E8=B4=B4?= =?UTF-8?q?=E6=9D=BF=E6=9D=A1=E6=95=B0=E5=92=8C=E6=97=B6=E9=97=B4=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=98=AF=E3=80=8C=E8=BE=93=E5=85=A5=E6=B3=95=E5=85=A8?= =?UTF-8?q?=E9=9D=A2=E5=B1=8F=E4=BC=98=E5=8C=96=E3=80=8D=E7=9A=84=EF=BC=8C?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E4=B8=8E=E3=80=8C=E5=85=B6=E4=BB=96=E3=80=8D?= =?UTF-8?q?=E4=B8=AD=E8=A7=A3=E9=94=81=E5=B0=8F=E7=B1=B3=E5=AE=9A=E5=88=B6?= =?UTF-8?q?=E7=89=88=E8=BE=93=E5=85=A5=E6=B3=95=E7=9A=84=E5=89=AA=E8=B4=B4?= =?UTF-8?q?=E6=9D=BF=E6=9D=A1=E6=95=B0=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/core/src/main/res/values-zh-rCN/strings_app.xml | 2 +- library/core/src/main/res/values/strings_app.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/library/core/src/main/res/values-zh-rCN/strings_app.xml b/library/core/src/main/res/values-zh-rCN/strings_app.xml index e1b3d74eb0..bb264ecda3 100644 --- a/library/core/src/main/res/values-zh-rCN/strings_app.xml +++ b/library/core/src/main/res/values-zh-rCN/strings_app.xml @@ -1610,7 +1610,7 @@ 拒绝强制亮度 禁用越界回弹 关闭访问设备日志确认 - 解除常用语剪贴板条数和时间限制 + 解除输入法全面屏优化常用语剪贴板条数和时间限制 开启后请在 Xposed 管理器中勾选对应输入法作用域 解锁输入法全面屏优化 对目标输入法启用所选样式的全面屏优化\n原生风格需要额外勾选系统框架作用域\n选择原生风格后只对非小米定制版生效,小米定制版勾选将加入键盘可切换列表 diff --git a/library/core/src/main/res/values/strings_app.xml b/library/core/src/main/res/values/strings_app.xml index ab992692cd..653a9d75f9 100644 --- a/library/core/src/main/res/values/strings_app.xml +++ b/library/core/src/main/res/values/strings_app.xml @@ -1655,9 +1655,9 @@ Reject forced brightness Disable out-of-bounds bounce Dismiss access device logs request dialog - Remove the clipboard and time limits for phrases + Remove the clipboard and time limits for Enhance keyboard After it\'s enabled, select the input method scope and restart it. - Unlock IME fullscreen optimization + Unlock Enhance keyboard limitation/string> Enable full-screen optimization for the selected style on the target input method\nThe "Native" style requires an additional check of the "System Framework" scope\nSelecting the "Native" style only applies to non-Xiaomi custom versions; checking it for Xiaomi custom versions will add the keyboard to the switchable list Target input methods If a selected input method is not in scope, its scope will be requested as well. From 76e16cb0d4e3f22ca67268cf91e43d20746ed6d1 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 05:40:17 +0800 Subject: [PATCH 05/13] =?UTF-8?q?feat:=20=E8=A7=A3=E9=94=81=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=B3=95=E5=88=87=E6=8D=A2=E7=95=8C=E9=9D=A2=20UI=20?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hyperceiler/hooker/VariousFragment.java | 12 +++ .../main/res/values-zh-rCN/strings_app.xml | 3 +- .../core/src/main/res/values/strings_app.xml | 5 +- library/core/src/main/res/xml/various.xml | 6 ++ .../appbase/input/InputMethodConfig.java | 9 +++ .../rules/various/clipboard/UnlockIme.java | 80 ++++++++++++++++++- 6 files changed, 110 insertions(+), 5 deletions(-) diff --git a/library/core/src/main/java/com/sevtinge/hyperceiler/hooker/VariousFragment.java b/library/core/src/main/java/com/sevtinge/hyperceiler/hooker/VariousFragment.java index 725d12b7d6..f629775757 100644 --- a/library/core/src/main/java/com/sevtinge/hyperceiler/hooker/VariousFragment.java +++ b/library/core/src/main/java/com/sevtinge/hyperceiler/hooker/VariousFragment.java @@ -41,11 +41,14 @@ import java.util.Set; import fan.preference.DropDownPreference; +import fan.preference.SeekBarPreferenceCompat; public class VariousFragment extends DashboardFragment { private static final String PREF_IME_STYLE = "prefs_key_various_unlock_ime_style"; private static final String PREF_IME_TARGET_APPS = "prefs_key_various_unlock_ime_apps"; private static final String PREF_IME_SHOW_ALL = "prefs_key_various_unlock_ime_show_all"; + private static final String PREF_IME_UI_COUNT = "prefs_key_various_unlock_ime_ui_count"; + private static final String PREF_AOSP_IME_NAV_BAR_LAYOUT_START = "prefs_key_various_aosp_ime_nav_bar_layout_start"; private static final String PREF_AOSP_IME_NAV_BAR_LAYOUT_END = "prefs_key_various_aosp_ime_nav_bar_layout_end"; private static final int IME_STYLE_OFF = 0; @@ -55,6 +58,7 @@ public class VariousFragment extends DashboardFragment { SwitchPreference mClipboard; SwitchPreference mClipboardClear; SwitchPreference mShowAllImeList; + SwitchPreference mImeListUiCount; DropDownPreference mImeStyle; DropDownPreference mAospImeNavBarLayoutStart; DropDownPreference mAospImeNavBarLayoutEnd; @@ -72,6 +76,7 @@ public void initPrefs() { mImeStyle = findPreference(PREF_IME_STYLE); mImeTargetApps = findPreference(PREF_IME_TARGET_APPS); mShowAllImeList = findPreference(PREF_IME_SHOW_ALL); + mImeListUiCount = findPreference(PREF_IME_UI_COUNT); mAospImeNavBarLayoutStart = findPreference(PREF_AOSP_IME_NAV_BAR_LAYOUT_START); mAospImeNavBarLayoutEnd = findPreference(PREF_AOSP_IME_NAV_BAR_LAYOUT_END); @@ -98,6 +103,10 @@ public void initPrefs() { mShowAllImeList.setChecked(getSharedPreferences().getBoolean(PREF_IME_SHOW_ALL, false)); } + if(mImeListUiCount != null){ + mImeListUiCount.setChecked(getSharedPreferences().getBoolean(PREF_IME_UI_COUNT, false)); + } + if (mAospImeNavBarLayoutStart != null) { mAospImeNavBarLayoutStart.setOnPreferenceChangeListener((preference, newValue) -> { String value = String.valueOf(newValue); @@ -179,6 +188,9 @@ private void updateInputMethodPreferenceState(int imeStyle) { if (mShowAllImeList != null) { mShowAllImeList.setVisible(imeStyle == IME_STYLE_MIUI); } + if (mImeListUiCount != null) { + mImeListUiCount.setVisible(imeStyle == IME_STYLE_MIUI); + } if (mAospImeNavBarLayoutStart != null) { mAospImeNavBarLayoutStart.setVisible(imeStyle == IME_STYLE_AOSP); } diff --git a/library/core/src/main/res/values-zh-rCN/strings_app.xml b/library/core/src/main/res/values-zh-rCN/strings_app.xml index bb264ecda3..385a12ac43 100644 --- a/library/core/src/main/res/values-zh-rCN/strings_app.xml +++ b/library/core/src/main/res/values-zh-rCN/strings_app.xml @@ -1616,7 +1616,8 @@ 对目标输入法启用所选样式的全面屏优化\n原生风格需要额外勾选系统框架作用域\n选择原生风格后只对非小米定制版生效,小米定制版勾选将加入键盘可切换列表 目标输入法 若所选输入法未加入作用域,将同时申请作用域 - 显示全部输入法列表 + 解锁输入法列表 UI 数量 + 显示完整输入法列表 部分输入法由于没有查看应用列表权限,可能会导致输入法切换列表显示不全\n此功能需要额外勾选系统框架,但可能会有性能影响,请谨慎开启 MIUI 风格 原生风格 diff --git a/library/core/src/main/res/values/strings_app.xml b/library/core/src/main/res/values/strings_app.xml index 653a9d75f9..360b178b74 100644 --- a/library/core/src/main/res/values/strings_app.xml +++ b/library/core/src/main/res/values/strings_app.xml @@ -1657,10 +1657,11 @@ Dismiss access device logs request dialog Remove the clipboard and time limits for Enhance keyboard After it\'s enabled, select the input method scope and restart it. - Unlock Enhance keyboard limitation/string> - Enable full-screen optimization for the selected style on the target input method\nThe "Native" style requires an additional check of the "System Framework" scope\nSelecting the "Native" style only applies to non-Xiaomi custom versions; checking it for Xiaomi custom versions will add the keyboard to the switchable list + Unlock Enhance keyboard limitation + Enable Enhance keyboard for the selected style on the target input method\nThe "Native" style requires an additional check of the "System Framework" scope\nSelecting the "Native" style only applies to non-Xiaomi custom versions; checking it for Xiaomi custom versions will add the keyboard to the switchable list Target input methods If a selected input method is not in scope, its scope will be requested as well. + Unlock input methods counts in UI Show all input methods Some input methods may appear incomplete in the switcher because they cannot query the installed app list.\nThis also requires System Framework scope and may affect performance. Enable with caution. MIUI style diff --git a/library/core/src/main/res/xml/various.xml b/library/core/src/main/res/xml/various.xml index 3a3878ff5c..575924ef89 100644 --- a/library/core/src/main/res/xml/various.xml +++ b/library/core/src/main/res/xml/various.xml @@ -79,6 +79,12 @@ android:summary="@string/various_unlock_ime_show_all_desc" android:title="@string/various_unlock_ime_show_all" /> + + diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/input/InputMethodConfig.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/input/InputMethodConfig.java index f3c3fbe55f..4651b1f24c 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/input/InputMethodConfig.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/input/InputMethodConfig.java @@ -22,6 +22,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.sevtinge.hyperceiler.common.log.XposedLog; import com.sevtinge.hyperceiler.common.utils.PrefsBridge; import java.util.Collections; @@ -31,6 +32,7 @@ public final class InputMethodConfig { public static final String PREF_IME_STYLE = "various_unlock_ime_style"; public static final String PREF_IME_TARGET_APPS = "various_unlock_ime_apps"; public static final String PREF_IME_SHOW_ALL = "various_unlock_ime_show_all"; + public static final String PREF_IME_UI_COUNT = "various_unlock_ime_ui_count"; public static final String PREF_AOSP_IME_NAV_BAR_LAYOUT_START = "various_aosp_ime_nav_bar_layout_start"; public static final String PREF_AOSP_IME_NAV_BAR_LAYOUT_END = "various_aosp_ime_nav_bar_layout_end"; public static final String PREF_AOSP_IME_NAV_BAR_LAYOUT_HANDLE = "various_aosp_ime_nav_bar_layout_handle"; @@ -115,6 +117,13 @@ public static boolean shouldShowAllImeList() { return isMiuiImeStyle() && PrefsBridge.getBoolean(PREF_IME_SHOW_ALL, false); } + public static boolean shouldUnlockImeListUiCount() { + if (!hasImeStylePreference()) { + return isFeatureEnabled(PREF_LEGACY_MIUI_IME_UNLOCK); + } + return isMiuiImeStyle() && PrefsBridge.getBoolean(PREF_IME_UI_COUNT, false); + } + public static boolean shouldHookMiuiImeListInSystem() { if (!hasImeStylePreference()) { return isFeatureEnabled(PREF_LEGACY_MIUI_IME_UNLOCK) && diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java index a07b9f5514..6a91a02161 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java @@ -21,11 +21,16 @@ import static com.sevtinge.hyperceiler.libhook.utils.api.DeviceHelper.System.isMoreAndroidVersion; import static com.sevtinge.hyperceiler.libhook.utils.api.PropUtils.getProp; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ListView; + import com.sevtinge.hyperceiler.common.log.XposedLog; import com.sevtinge.hyperceiler.libhook.appbase.input.InputMethodBottomManagerHelper; import com.sevtinge.hyperceiler.libhook.appbase.input.InputMethodConfig; import com.sevtinge.hyperceiler.libhook.base.BaseHook; import com.sevtinge.hyperceiler.libhook.callback.IMethodHook; +import com.sevtinge.hyperceiler.libhook.callback.IReplaceHook; import com.sevtinge.hyperceiler.libhook.utils.hookapi.tool.EzxHelpUtils; import java.util.List; @@ -87,11 +92,21 @@ public void initLoader(ClassLoader classLoader) { boolean showAllImeList = InputMethodConfig.shouldShowAllImeList(); if (showAllImeList) { + + // 阻止获取输入法列表时进行过滤。同时也 hook 了系统框架,否则 getEnabledInputMethodList() 获取到的输入法可能仍然不全 + hookGetSupportIme(classLoader); + // 针对 A11 的修复切换输入法列表 - getSupportIme(classLoader); hookDeleteNotSupportIme("com.miui.inputmethod.InputMethodBottomManager$MiuiSwitchInputMethodListener", classLoader); } + boolean unlockImeListUiCount = InputMethodConfig.shouldUnlockImeListUiCount(); + if (unlockImeListUiCount) + { + + hookUnlockImeListUiCount(classLoader); + } + if (!isNonCustomizeIme(getPackageName())) { return; } @@ -206,7 +221,7 @@ private void hookDeleteNotSupportIme(String className, ClassLoader classLoader) * * @param classLoader */ - private void getSupportIme(ClassLoader classLoader) { + private void hookGetSupportIme(ClassLoader classLoader) { try { EzxHelpUtils.findAndHookMethod("com.miui.inputmethod.InputMethodBottomManager", classLoader, "getSupportIme", @@ -226,6 +241,67 @@ public void before(HookParam param) throws Throwable { } } + /** + * 解除切换输入法列表最多只显示四个的问题 + * ~~虽然可以滚动就是了~~ + * ——by LuoYunXI0407 + * + * @param classLoader + */ + private void hookUnlockImeListUiCount(ClassLoader classLoader) { + try { + EzxHelpUtils.findAndHookMethodReplace("com.miui.inputmethod.InputMethodSwitchPopupView", + classLoader, "setListViewHeight", + new IReplaceHook() { + @Override + public Object replace(HookParam param) { + + Object thiz = param.getThisObject(); + + Object adapter = getObjectField(thiz, "mInputMethodSwitchAdapter"); + ListView listView = (ListView) getObjectField(thiz, "mListView"); + + if (adapter == null) return null; + + int count = (int) callMethod(adapter, "getCount"); + + int MAX = 10; // 不会吧不会吧,不会有人输入法超过 10 个吧 + + if (count > MAX) { + count = MAX; + } + + int measuredHeight = 0; + + for (int i = 0; i < count; i++) { + View view = (View) callMethod( + adapter, + "getView", + i, + null, + listView + ); + + view.measure(0, 0); + measuredHeight += view.getMeasuredHeight(); + } + + int dividerHeight = listView.getDividerHeight(); + measuredHeight += dividerHeight * (count - 1); + + ViewGroup.LayoutParams lp = listView.getLayoutParams(); + lp.height = measuredHeight; + listView.setLayoutParams(lp); + + return null; + } + } + ); + } catch (Throwable e) { + XposedLog.e(TAG, "Hook method setListViewHeight: " + e); + } + } + private boolean isMiuiImeBottomSupported() { return "1".equals(getProp("ro.miui.support_miui_ime_bottom", "0")); } From ca5f54aeb267138145897db3959b96ba41326a00 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 07:29:30 +0800 Subject: [PATCH 06/13] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=89=AA?= =?UTF-8?q?=E8=B4=B4=E6=9D=BF=E8=AF=BB=E5=8F=96=E6=8F=90=E7=A4=BA=20hook?= =?UTF-8?q?=20=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java | 4 +++- .../sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java index 3a74974b50..a2eda0f376 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Lbe.java @@ -19,6 +19,7 @@ package com.sevtinge.hyperceiler.libhook.app; import com.hchen.database.HookBase; +import com.sevtinge.hyperceiler.common.log.XposedLog; import com.sevtinge.hyperceiler.common.utils.PrefsBridge; import com.sevtinge.hyperceiler.libhook.base.BaseLoad; import com.sevtinge.hyperceiler.libhook.rules.lbe.AutoStart; @@ -33,7 +34,8 @@ public void onPackageLoaded() { initHook(new AutoStart(), PrefsBridge.getBoolean("lbe_auto_start")); // paste toast - initHook(new PasteToast(), PrefsBridge.getBoolean("lbe_paste_toast")); + initHook(new PasteToast(), PrefsBridge.getBoolean("lbe_paste_toast_custom")); + } } diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java index 0cc07051b7..b7e3149121 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/lbe/PasteToast.java @@ -54,7 +54,7 @@ public void after(HookParam param) { View view = (View) param.getResult(); if (view == null) return; - view.setAlpha(PrefsBridge.getFloat("prefs_key_lbe_paste_toast_custom_toast_opacity", 100)/100); + view.setAlpha((float) (PrefsBridge.getInt("prefs_key_lbe_paste_toast_custom_toast_opacity", 100)/100.0)); Context context = view.getContext(); From 1b289e0e5751551a9c65fe9b81d60ecd41bbca04 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 07:59:02 +0800 Subject: [PATCH 07/13] fun: add zh-rME translation --- .../src/main/res/values-zh-rME/strings_app.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/library/core/src/main/res/values-zh-rME/strings_app.xml b/library/core/src/main/res/values-zh-rME/strings_app.xml index 6db69b4e45..fb595e7968 100644 --- a/library/core/src/main/res/values-zh-rME/strings_app.xml +++ b/library/core/src/main/res/values-zh-rME/strings_app.xml @@ -637,4 +637,19 @@ 蓝色牙齿 非常热门的谁都想来蹭的热点 烫点 + + + 阿里郎只有使用权没有所有权 + 不许偷关掉我自启动 + 小米又魔改了原生的剪贴板读取提示 + 爆改小米的假 Toast + 点关闭是为了已读的不是为了关掉提示的! + 要不把关闭按钮叫做确定吧,或者其他文本 + 假 Toast 不穿透,要么挡住要么误触关闭 + 假装假 Toast 能和真 Toast 一样有不透明度 + + 凭什么输入法全面屏优化只有你家输入法才能用 + 你家定制版输入法就占得切换输入法槽位不够用了 + 第三方输入法怎么了你 + 凭什么切换输入法列表只有小米输入法? 过滤了一次就算了还从系统框架再过滤一次 From 1e7dc7763657fdb546240baa197eba1585383db7 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 17:51:08 +0800 Subject: [PATCH 08/13] feat: Add BypassWakePathChecker.java --- .../main/res/values-zh-rCN/strings_app.xml | 3 + .../core/src/main/res/values/strings_app.xml | 2 + .../core/src/main/res/xml/framework_other.xml | 4 + .../app/SystemFramework/SystemFrameworkB.java | 2 + .../app/SystemFramework/SystemFrameworkV.java | 3 + .../others/BypassWakePathChecker.java | 116 ++++++++++++++++++ .../rules/various/clipboard/UnlockIme.java | 5 +- 7 files changed, 132 insertions(+), 3 deletions(-) create mode 100644 library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java diff --git a/library/core/src/main/res/values-zh-rCN/strings_app.xml b/library/core/src/main/res/values-zh-rCN/strings_app.xml index 385a12ac43..fba22c3d51 100644 --- a/library/core/src/main/res/values-zh-rCN/strings_app.xml +++ b/library/core/src/main/res/values-zh-rCN/strings_app.xml @@ -465,6 +465,9 @@ 解除应用在未使用 appClientId 的情况下跳转到小米应用商店其他应用的详情页会被拒绝展示的限制 打开下载页面时不强制使用小米下载管理器 解决 Google 快速分享查看下载内容跳转错误的问题 + 绕过链式启动检测器 + 允许所有链式启动请求 + 此列表下的功能需要在您了解此类功能后再选择性启用,部分选项存在一定危险性,请知悉\n常规选项的功能除总开关外均即时生效,扩展功能无论开关都需要重启才能生效 包管理服务 diff --git a/library/core/src/main/res/values/strings_app.xml b/library/core/src/main/res/values/strings_app.xml index 360b178b74..076c9df912 100644 --- a/library/core/src/main/res/values/strings_app.xml +++ b/library/core/src/main/res/values/strings_app.xml @@ -505,6 +505,8 @@ Remove the restriction that prevents an app from redirecting to another app\'s details page in GetApps without using the appClientId. Fix download redirection Fixes the incorrect redirection issue when clicking \"View downloads\" in Quick Share + Bypass wake path checker + Always allow chained start requests Use Android file picker No longer use HyperOS File Manager diff --git a/library/core/src/main/res/xml/framework_other.xml b/library/core/src/main/res/xml/framework_other.xml index dc0e528a0c..49a4c1d5bf 100644 --- a/library/core/src/main/res/xml/framework_other.xml +++ b/library/core/src/main/res/xml/framework_other.xml @@ -227,6 +227,10 @@ android:summary="@string/system_framework_bypass_force_downloadui_desc" android:title="@string/system_framework_bypass_force_downloadui" /> + diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkB.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkB.java index fe755349e2..d05e07bf94 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkB.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkB.java @@ -56,6 +56,7 @@ import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassForceDownloadui; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassForceMiAppStore; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassUnknownSourcesRestrictions; +import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassWakePathChecker; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.CleanOpenMenu; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.CleanProcessTextMenu; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.CleanShareMenu; @@ -164,6 +165,7 @@ public void onPackageLoaded() { initHook(new AllowDisableProtectedPackage(), PrefsBridge.getBoolean("system_framework_allow_disable_protected_package")); initHook(new BypassUnknownSourcesRestrictions(), PrefsBridge.getBoolean("system_framework_bypass_unknown_sources_restrictions")); initHook(new BypassForceMiAppStore(), PrefsBridge.getBoolean("system_framework_bypass_force_mi_appstore") || PrefsBridge.getBoolean("system_framework_market_use_detailmini")); + initHook(new BypassWakePathChecker(), PrefsBridge.getBoolean("system_framework_bypass_wake_path_checker")); initHook(new BypassForceDownloadui(), PrefsBridge.getBoolean("system_framework_bypass_force_downloadui")); initHook(GMSDozeFixFramework.INSTANCE, PrefsBridge.getBoolean("powerkeeper_gms_doze_fix")); initHook(new NativeFilePicker(), PrefsBridge.getBoolean("system_framework_native_file_picker")); diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkV.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkV.java index 338047c6b8..056f4adf6e 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkV.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/SystemFramework/SystemFrameworkV.java @@ -58,6 +58,7 @@ import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassForceDownloadui; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassForceMiAppStore; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassUnknownSourcesRestrictions; +import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.BypassWakePathChecker; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.CleanOpenMenu; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.CleanProcessTextMenu; import com.sevtinge.hyperceiler.libhook.rules.systemframework.others.CleanShareMenu; @@ -158,6 +159,8 @@ public void onPackageLoaded() { initHook(new BypassForceMiAppStore(), PrefsBridge.getBoolean("system_framework_bypass_force_mi_appstore") || PrefsBridge.getBoolean("system_framework_market_use_detailmini")); initHook(new BypassForceDownloadui(), PrefsBridge.getBoolean("system_framework_bypass_force_downloadui")); + initHook(new BypassWakePathChecker(), PrefsBridge.getBoolean("system_framework_bypass_wake_path_checker")); + initHook(new ThermalBrightness(), PrefsBridge.getBoolean("system_framework_other_thermal_brightness")); initHook(DisableCleaner.INSTANCE, PrefsBridge.getBoolean("system_framework_other_disable_cleaner")); initHook(DisableGestureMonitor.INSTANCE, PrefsBridge.getBoolean("system_framework_other_disable_gesture_monitor")); diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java new file mode 100644 index 0000000000..10797323f7 --- /dev/null +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java @@ -0,0 +1,116 @@ +/* + * This file is part of HyperCeiler. + * + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Copyright (C) 2023-2026 HyperCeiler Contributions + */ + +package com.sevtinge.hyperceiler.libhook.rules.systemframework.others; + + +import android.util.Log; + +import com.sevtinge.hyperceiler.common.log.XposedLog; +import com.sevtinge.hyperceiler.libhook.base.BaseHook; +import com.sevtinge.hyperceiler.libhook.callback.IMethodHook; + +import io.github.kyuubiran.ezxhelper.xposed.common.HookParam; + +/** + * 绕过链式跳转检测器 + * + * @author LuoYunXi0407 + */ +public class BypassWakePathChecker extends BaseHook { + + @Override + public void init() { + + try { + Class clazz = findClass( + "com.miui.server.WakePathChecker" + ); + if (clazz == null) { + XposedLog.w(TAG, getPackageName(), "Class not found: com.miui.server.WakePathChecker"); + return; + } + + findAndHookMethod( + clazz, + "isAllowedByWakePathRule", + String.class, + String.class, + String.class, + String.class, + int.class, + int.class, + int.class, + int.class, + new IMethodHook() { + @Override + public void before(HookParam param) { + param.setResult(true); + } + } + ); + findAndHookMethod( + clazz, + "checkBroadcastWakePath", + String.class, + String.class, + String.class, + String.class, + int.class, + int.class, + int.class, + int.class, + new IMethodHook() { + @Override + public void before(HookParam param) { + param.setResult(true); + } + } + ); + findAndHookMethod( + clazz, + "checkAllowStartActivity", + String.class, + String.class, + String.class, + String.class, + int.class, + int.class, + int.class, + int.class, + new IMethodHook() { + @Override + public void before(HookParam param) { + param.setResult(true); + } + } + ); + + } catch (Throwable t) { + XposedLog.w(TAG, getPackageName(), "Failed to hook - " + Log.getStackTraceString(t)); + } + } + + + + + + + +} diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java index 6a91a02161..04a67bc0ab 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/various/clipboard/UnlockIme.java @@ -242,10 +242,9 @@ public void before(HookParam param) throws Throwable { } /** - * 解除切换输入法列表最多只显示四个的问题 - * ~~虽然可以滚动就是了~~ - * ——by LuoYunXI0407 + * 解除切换输入法列表最多只显示四个的问题 (虽然本来可以滚动就是了) * + * @author LuoYunXi0407 * @param classLoader */ private void hookUnlockImeListUiCount(ClassLoader classLoader) { From 7f401bef5d5b2245a7a07d81223804d0c6704eea Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Fri, 17 Apr 2026 18:23:15 +0800 Subject: [PATCH 09/13] opt: add hint for system_framework_other_rotation_button --- library/core/src/main/res/values-zh-rCN/strings_app.xml | 1 + library/core/src/main/res/values/strings_app.xml | 1 + library/core/src/main/res/xml/system_ui_navigation.xml | 1 + 3 files changed, 3 insertions(+) diff --git a/library/core/src/main/res/values-zh-rCN/strings_app.xml b/library/core/src/main/res/values-zh-rCN/strings_app.xml index fba22c3d51..1917842890 100644 --- a/library/core/src/main/res/values-zh-rCN/strings_app.xml +++ b/library/core/src/main/res/values-zh-rCN/strings_app.xml @@ -433,6 +433,7 @@ 快速安装 安装至运行内存以提升安装速度,需要系统底层支持 旋转建议 + 若强制不生效,你需要确保没有在系统或模块中启用隐藏手势提示线\n如果你有隐藏手势提示线的需求,你可以在自定义导航栏中将导航栏和导航栏框架高度调为 0dp,并且在自定义手势提示线中把粗细调为 0.00dp 禁止自动降低屏幕亮度 仅限非温控导致的自动降低屏幕亮度 禁止自动终止后台应用进程 diff --git a/library/core/src/main/res/values/strings_app.xml b/library/core/src/main/res/values/strings_app.xml index 076c9df912..43d3d9b3f7 100644 --- a/library/core/src/main/res/values/strings_app.xml +++ b/library/core/src/main/res/values/strings_app.xml @@ -473,6 +473,7 @@ Speed install Install with RAM to speed up installation. System core support is required. Rotation recommendations + If forcing it doesn\'t work, you need to ensure that hiding the gesture line is not enabled in the system or module. \nIf you need to hide it, you can set the height of the navigation and navigation frame to 0dp in the custom navigation, and adjust the thickness of the gesture line to 0.00dp in the custom gesture line. Disable automatic screen brightness reduction Only automatically reduce screen brightness that isn\'t caused by thermal control Disable kill background apps diff --git a/library/core/src/main/res/xml/system_ui_navigation.xml b/library/core/src/main/res/xml/system_ui_navigation.xml index a081622184..e4897f50d5 100644 --- a/library/core/src/main/res/xml/system_ui_navigation.xml +++ b/library/core/src/main/res/xml/system_ui_navigation.xml @@ -26,6 +26,7 @@ android:defaultValue="0" android:key="prefs_key_system_framework_other_rotation_button_int" android:title="@string/system_framework_other_rotation_button" + android:summary="@string/system_framework_other_rotation_button_desc" app:entries="@array/system_framework_other_rotation_button_mode" app:entryValues="@array/status_bar_icon_mode_value" /> From c0973dde31686ffa884123994559e1b087a6c707 Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Sat, 18 Apr 2026 00:44:56 +0800 Subject: [PATCH 10/13] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E4=BA=86=20frag?= =?UTF-8?q?ment=5Fbottom=5Fsheet=20=E5=8F=AF=E8=83=BD=E8=A2=AB=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E6=A0=8F=E6=8C=A1=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/TermsAndStatementBottomSheet.java | 18 ++++++++++++++++++ .../res/layout/fragment_bottom_sheet_web.xml | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/library/provision/src/main/java/com/sevtinge/hyperceiler/provision/widget/TermsAndStatementBottomSheet.java b/library/provision/src/main/java/com/sevtinge/hyperceiler/provision/widget/TermsAndStatementBottomSheet.java index 264725bb9a..9f6aa6996b 100644 --- a/library/provision/src/main/java/com/sevtinge/hyperceiler/provision/widget/TermsAndStatementBottomSheet.java +++ b/library/provision/src/main/java/com/sevtinge/hyperceiler/provision/widget/TermsAndStatementBottomSheet.java @@ -1,3 +1,21 @@ +/* + * This file is part of HyperCeiler. + + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + + * Copyright (C) 2023-2026 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.provision.widget; import android.annotation.SuppressLint; diff --git a/library/provision/src/main/res/layout/fragment_bottom_sheet_web.xml b/library/provision/src/main/res/layout/fragment_bottom_sheet_web.xml index d0a59bfe85..e5fef219d4 100644 --- a/library/provision/src/main/res/layout/fragment_bottom_sheet_web.xml +++ b/library/provision/src/main/res/layout/fragment_bottom_sheet_web.xml @@ -2,7 +2,8 @@ + android:layout_height="match_parent" + android:fitsSystemWindows="true"> Date: Sat, 18 Apr 2026 01:17:55 +0800 Subject: [PATCH 11/13] opt: zh-rCN String fuzzy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 事实上,这是原生安卓的左下角/右下角向内唤起 Google 助理 Hook 的。原字符串描述不清 --- library/core/src/main/res/values-zh-rCN/strings_app.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/core/src/main/res/values-zh-rCN/strings_app.xml b/library/core/src/main/res/values-zh-rCN/strings_app.xml index 1917842890..c04c1d157d 100644 --- a/library/core/src/main/res/values-zh-rCN/strings_app.xml +++ b/library/core/src/main/res/values-zh-rCN/strings_app.xml @@ -1063,9 +1063,9 @@ 导航 切换上一个应用 从屏幕两侧向内滑动并停顿,快速切换上一个应用 - 右上滑动 + 左下角向内滑动 在任意界面从屏幕左下角向内滑动 - 左上滑动 + 右下角向内滑动 在任意界面从屏幕右下角向内滑动 禁用全屏返回手势 修复预测性返回进度 From 04eca6d33e76e59a1dd2904dc107cb2d7d2186df Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Sat, 18 Apr 2026 03:03:25 +0800 Subject: [PATCH 12/13] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C=E4=B8=8D=E5=AF=B9=E5=BA=94=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appbase/systemframework/GlobalActionBridge.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/systemframework/GlobalActionBridge.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/systemframework/GlobalActionBridge.java index d441aa773a..2bf845f0ae 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/systemframework/GlobalActionBridge.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/appbase/systemframework/GlobalActionBridge.java @@ -64,11 +64,11 @@ public static boolean handleAction(Context context, String key, boolean skipLock } return switch (action) { case 1 -> StatusBarActionBridge.openNotificationCenter(context); - case 2 -> StatusBarActionBridge.clearMemory(context); - case 3 -> sendAction(context, "ToggleColorInversion"); - case 4 -> sendAction(context, "LockScreen"); - case 5 -> sendAction(context, "GoToSleep"); - case 6 -> sendAction(context, "ScreenCapture"); + case 2 -> sendAction(context, "LockScreen"); + case 3 -> sendAction(context, "GoToSleep"); + case 4 -> sendAction(context, "ScreenCapture"); + case 5 -> StatusBarActionBridge.clearMemory(context); + case 6 -> sendAction(context, "ToggleColorInversion"); case 7 -> StatusBarActionBridge.openRecents(context); case 8 -> StatusBarActionBridge.openVolumeDialog(context); case 12 -> sendAction(context, "OpenPowerMenu"); From 29a54aaf0c2a4f7c5b6a2f28919df65194bcee9d Mon Sep 17 00:00:00 2001 From: LuoYunXi Date: Sat, 18 Apr 2026 18:18:08 +0800 Subject: [PATCH 13/13] =?UTF-8?q?fix:=20=E6=88=91=E6=98=AF=E7=AC=A8?= =?UTF-8?q?=E8=9B=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../others/BypassWakePathChecker.java | 24 ++----------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java index 10797323f7..4a421a9a40 100644 --- a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/systemframework/others/BypassWakePathChecker.java @@ -65,35 +65,15 @@ public void before(HookParam param) { } } ); - findAndHookMethod( - clazz, - "checkBroadcastWakePath", - String.class, - String.class, - String.class, - String.class, - int.class, - int.class, - int.class, - int.class, - new IMethodHook() { - @Override - public void before(HookParam param) { - param.setResult(true); - } - } - ); + findAndHookMethod( clazz, "checkAllowStartActivity", String.class, String.class, - String.class, - String.class, - int.class, - int.class, int.class, int.class, + android.content.Intent.class, new IMethodHook() { @Override public void before(HookParam param) {