From e133a42f83bfdde4e7b2473fafc1ce653415eacb Mon Sep 17 00:00:00 2001 From: RichardLuo <22096448+RichardLuo0@users.noreply.github.com> Date: Sun, 23 Nov 2025 17:00:56 +0800 Subject: [PATCH 1/2] feat: make mipush globally visible --- .../yufz/hmspush/hook/system/HookSystemService.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt b/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt index b9337498..7739f310 100644 --- a/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt +++ b/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt @@ -5,10 +5,12 @@ import android.app.NotificationManager import android.content.Context import android.os.Binder import de.robv.android.xposed.XposedHelpers +import one.yufz.hmspush.common.HMS_PACKAGE_NAME import one.yufz.hmspush.common.IS_SYSTEM_HOOK_READY import one.yufz.hmspush.hook.XLog import one.yufz.xposed.callMethod import one.yufz.xposed.get +import one.yufz.xposed.hookAllMethods import one.yufz.xposed.hookMethod class HookSystemService { @@ -54,6 +56,17 @@ class HookSystemService { val classShortcutService = XposedHelpers.findClass("com.android.server.pm.ShortcutService", classLoader) ShortcutPermissionHooker.hook(classShortcutService) + + // make mipush globally visible + val getPackageNameM = XposedHelpers.findClass("com.android.server.pm.pkg.PackageState", classLoader).getMethod("getPackageName") + XposedHelpers.findClass("com.android.server.pm.AppsFilterBase", classLoader)?.hookAllMethods("shouldFilterApplication") { + doBefore { + val targetPkgSetting = args[3] ?: return@doBefore + if (getPackageNameM.invoke(targetPkgSetting) == HMS_PACKAGE_NAME) { + result = false + } + } + } } private fun hookSystemReadyFlag(stubClass: Class) { From 0c6fa9b335dd15ba4edb090a30e5388e2d5f3083 Mon Sep 17 00:00:00 2001 From: RichardLuo <22096448+RichardLuo0@users.noreply.github.com> Date: Tue, 25 Nov 2025 22:02:57 +0800 Subject: [PATCH 2/2] perf: improve performance --- .../one/yufz/hmspush/hook/system/HookSystemService.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt b/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt index 7739f310..c7bdbac6 100644 --- a/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt +++ b/xposed/src/main/java/one/yufz/hmspush/hook/system/HookSystemService.kt @@ -60,11 +60,11 @@ class HookSystemService { // make mipush globally visible val getPackageNameM = XposedHelpers.findClass("com.android.server.pm.pkg.PackageState", classLoader).getMethod("getPackageName") XposedHelpers.findClass("com.android.server.pm.AppsFilterBase", classLoader)?.hookAllMethods("shouldFilterApplication") { - doBefore { - val targetPkgSetting = args[3] ?: return@doBefore - if (getPackageNameM.invoke(targetPkgSetting) == HMS_PACKAGE_NAME) { - result = false - } + doAfter { + if (result == false) return@doAfter + val targetPkgSetting = args[3] ?: return@doAfter + if (getPackageNameM.invoke(targetPkgSetting) == HMS_PACKAGE_NAME) + result = false } } }