From 817685aa629562c508bccebe6fd82cc9def7844b Mon Sep 17 00:00:00 2001 From: Quarix <144305875+uarix@users.noreply.github.com> Date: Thu, 26 Mar 2026 12:53:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(wallet):=20=E6=B7=BB=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E7=B1=B3=E9=92=B1=E5=8C=85=E6=94=AF=E6=8C=81=EF=BC=8C=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=90=AF=E5=8A=A8=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + README_en-US.md | 1 + README_zh-HK.md | 1 + .../main/res/xml/prefs_about_contributor.xml | 7 ++ app/src/main/res/xml/settings_header.xml | 7 ++ library/core/src/main/res/xml/wallet.xml | 29 +++++++ .../hyperceiler/libhook/app/Wallet.java | 33 ++++++++ .../libhook/rules/wallet/DisableSplashAd.java | 84 +++++++++++++++++++ .../src/main/res/values-zh-rCN/strings.xml | 5 ++ .../src/main/res/values-zh-rHK/strings.xml | 5 ++ .../libhook/src/main/res/values/strings.xml | 5 ++ .../main/resources/META-INF/xposed/scope.list | 1 + 12 files changed, 179 insertions(+) create mode 100644 library/core/src/main/res/xml/wallet.xml create mode 100644 library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Wallet.java create mode 100644 library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/wallet/DisableSplashAd.java diff --git a/README.md b/README.md index 85a1530bc8..52d4ecc2c2 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ Xiaomi HyperOS 3 or 4 将是本项目的一个终点,就目前来说,小米 | 小米相册-编辑 | com.miui.mediaeditor | | 小米云服务 | com.miui.cloudservice | | 小米智能卡 | com.miui.tsmclient | +| 小米钱包 | com.mipay.wallet | | 讯飞输入法小米版 | com.iflytek.inputmethod.miui | | 应用包管理组件 | com.miui.packageinstaller | | 应用商店 | com.xiaomi.market | diff --git a/README_en-US.md b/README_en-US.md index a501fcd454..77a18f17b4 100644 --- a/README_en-US.md +++ b/README_en-US.md @@ -84,6 +84,7 @@ In the future, this module will be extensively adapted to Xiaomi HyperOS 3.0 and | Gallery Editor | com.miui.mediaeditor | | Xiaomi Cloud | com.miui.cloudservice | | Smart cards | com.miui.tsmclient | +| Mi Wallet | com.mipay.wallet | | iFlytek IME for MIUI | com.iflytek.inputmethod.miui | | Package installer | com.miui.packageinstaller | | GetApps | com.xiaomi.market | diff --git a/README_zh-HK.md b/README_zh-HK.md index 8337192b5a..f0aed25cc4 100644 --- a/README_zh-HK.md +++ b/README_zh-HK.md @@ -92,6 +92,7 @@ Xiaomi HyperOS 3 或 4 將會是本項目的終點,就目前來說,小米官 | 小米相簿-編輯 | com.miui.mediaeditor | | 小米雲服務 | com.miui.cloudservice | | 小米智慧卡 | com.miui.tsmclient | +| 小米錢包 | com.mipay.wallet | | 訊飛輸入法小米版 | com.iflytek.inputmethod.miui | | 應用程式檔案管理元件 | com.miui.packageinstaller | | 應用商店 | com.xiaomi.market | diff --git a/app/src/main/res/xml/prefs_about_contributor.xml b/app/src/main/res/xml/prefs_about_contributor.xml index de5dbf7c92..47364f191d 100644 --- a/app/src/main/res/xml/prefs_about_contributor.xml +++ b/app/src/main/res/xml/prefs_about_contributor.xml @@ -218,6 +218,13 @@ android:action="android.intent.action.VIEW" android:data="https://github.com/pzcn" /> + + + diff --git a/app/src/main/res/xml/settings_header.xml b/app/src/main/res/xml/settings_header.xml index 8243fcc466..aed93a526b 100644 --- a/app/src/main/res/xml/settings_header.xml +++ b/app/src/main/res/xml/settings_header.xml @@ -338,6 +338,13 @@ android:title="@string/tsmclient" app:inflatedXml="@xml/tsmclient"/> +
+
+ + + + \ No newline at end of file diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Wallet.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Wallet.java new file mode 100644 index 0000000000..b43e7e9f92 --- /dev/null +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/Wallet.java @@ -0,0 +1,33 @@ +/* + * 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.app; + +import com.hchen.database.HookBase; +import com.sevtinge.hyperceiler.common.utils.PrefsBridge; +import com.sevtinge.hyperceiler.libhook.base.BaseLoad; +import com.sevtinge.hyperceiler.libhook.rules.wallet.DisableSplashAd; + +@HookBase(targetPackage = "com.mipay.wallet") +public class Wallet extends BaseLoad { + @Override + public void onPackageLoaded() { + initHook(new DisableSplashAd(), PrefsBridge.getBoolean("wallet_disable_splash_ad")); + } +} \ No newline at end of file diff --git a/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/wallet/DisableSplashAd.java b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/wallet/DisableSplashAd.java new file mode 100644 index 0000000000..2620b63fb7 --- /dev/null +++ b/library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/rules/wallet/DisableSplashAd.java @@ -0,0 +1,84 @@ +/* + * 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.wallet; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.view.View; + +import com.sevtinge.hyperceiler.libhook.base.BaseHook; +import com.sevtinge.hyperceiler.libhook.callback.IMethodHook; + +import java.lang.reflect.Method; + +import io.github.kyuubiran.ezxhelper.xposed.common.HookParam; + +public class DisableSplashAd extends BaseHook { + @Override + public void init() { + findAndHookMethod("com.xiaomi.jr.app.MiFinanceActivity", "onCreate", Bundle.class, new IMethodHook() { + @Override + public void after(HookParam param) { + Activity activity = (Activity) param.getThisObject(); + int resId = activity.getResources().getIdentifier("splash_container", "id", activity.getPackageName()); + if (resId > 0) { + View splashContainer = activity.findViewById(resId); + if (splashContainer != null) { + splashContainer.setVisibility(View.GONE); + } + } + } + }); + + Class adManagerClass = findClassIfExists("com.xiaomi.jr.ad.AdManager"); + if (adManagerClass != null) { + for (Method m : adManagerClass.getDeclaredMethods()) { + if (m.getParameterTypes().length == 2 + && m.getParameterTypes()[0] == Context.class + && m.getParameterTypes()[1].getName().contains("OnGetAdDataListener")) { + + hookMethod(m, new IMethodHook() { + @Override + public void before(HookParam param) { + Object listener = param.getArgs()[1]; + if (listener != null) { + callMethod(listener, "onGetAdData", new Object[]{null}); + } + param.setResult(null); + } + }); + } + } + } + + findAndHookMethod("com.xiaomi.jr.app.splash.SplashFragment", "onResume", new IMethodHook() { + @Override + public void after(HookParam param) { + Object activity = callMethod(param.getThisObject(), "getActivity"); + if (activity != null) { + try { + callMethod(activity, "finishSplash", false); + } catch (Throwable ignored) {} + } + } + }); + } +} \ No newline at end of file diff --git a/library/libhook/src/main/res/values-zh-rCN/strings.xml b/library/libhook/src/main/res/values-zh-rCN/strings.xml index 746c3bc9ec..dd5cd64f4b 100644 --- a/library/libhook/src/main/res/values-zh-rCN/strings.xml +++ b/library/libhook/src/main/res/values-zh-rCN/strings.xml @@ -98,6 +98,11 @@ 正在自动开启 NFC … 手动开启 NFC 自动开启 NFC 失败 + + + 小米钱包 + 移除开屏广告 + 跳过启动页,拦截广告请求 小米澎湃 AI 引擎 修改复制直达使用的浏览器 diff --git a/library/libhook/src/main/res/values-zh-rHK/strings.xml b/library/libhook/src/main/res/values-zh-rHK/strings.xml index b4735b2a8e..924f26cb9e 100644 --- a/library/libhook/src/main/res/values-zh-rHK/strings.xml +++ b/library/libhook/src/main/res/values-zh-rHK/strings.xml @@ -87,6 +87,11 @@ 正在自動開啟 NFC … 手動開啟 NFC 自動開啟 NFC 失敗 + + + 小米錢包 + 移除開屏廣告 + 跳過啟動頁,攔截廣告請求 小米妙享中心 多開 diff --git a/library/libhook/src/main/res/values/strings.xml b/library/libhook/src/main/res/values/strings.xml index 528f95b335..018be81822 100644 --- a/library/libhook/src/main/res/values/strings.xml +++ b/library/libhook/src/main/res/values/strings.xml @@ -104,6 +104,11 @@ Turning on NFC automatically… Turn on NFC manually Failed to enable NFC automatically + + + Mi Wallet + Remove splash ads + Skip splash screen and block ad requests Xiaomi AI Engine Change the browser used for direct copy diff --git a/library/libhook/src/main/resources/META-INF/xposed/scope.list b/library/libhook/src/main/resources/META-INF/xposed/scope.list index 15477c79a9..690e2efa94 100644 --- a/library/libhook/src/main/resources/META-INF/xposed/scope.list +++ b/library/libhook/src/main/resources/META-INF/xposed/scope.list @@ -21,6 +21,7 @@ com.android.updater com.duokan.phone.remotecontroller com.lbe.security.miui com.mi.health +com.mipay.wallet com.milink.service com.miui.analytics com.miui.aod