From 163500e4d92f44c1781d6c53e2f555bb1bbc97c9 Mon Sep 17 00:00:00 2001 From: o0kam1 Date: Wed, 4 Jun 2025 00:29:49 +0800 Subject: [PATCH] fix: XposedInit not init all hooker (#1660) --- .../java/me/iacn/biliroaming/XposedInit.kt | 103 ++++++++++-------- .../hook/DialogBlurBackgroundHook.kt | 2 +- .../java/me/iacn/biliroaming/utils/Utils.kt | 3 +- 3 files changed, 59 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/me/iacn/biliroaming/XposedInit.kt b/app/src/main/java/me/iacn/biliroaming/XposedInit.kt index b7b3a965c5..40afaee674 100644 --- a/app/src/main/java/me/iacn/biliroaming/XposedInit.kt +++ b/app/src/main/java/me/iacn/biliroaming/XposedInit.kt @@ -78,64 +78,64 @@ class XposedInit : IXposedHookLoadPackage, IXposedHookZygoteInit { BiliBiliPackage(lpparam.classLoader, param.args[0] as Context) if (BuildConfig.DEBUG) { - startHook(SSLHook(lpparam.classLoader)) + startHook { SSLHook(lpparam.classLoader) } } - startHook(KillDelayBootHook(lpparam.classLoader)) - startHook(HintHook(lpparam.classLoader)) - startHook(BangumiSeasonHook(lpparam.classLoader)) - startHook(BangumiPlayUrlHook(lpparam.classLoader)) - startHook(PegasusHook(lpparam.classLoader)) - startHook(CustomThemeHook(lpparam.classLoader)) - startHook(TeenagersModeHook(lpparam.classLoader)) - startHook(JsonHook(lpparam.classLoader)) - startHook(ShareHook(lpparam.classLoader)) - startHook(AutoLikeHook(lpparam.classLoader)) - startHook(SettingHook(lpparam.classLoader)) - startHook(SplashHook(lpparam.classLoader)) - startHook(EnvHook(lpparam.classLoader)) - startHook(DownloadThreadHook(lpparam.classLoader)) - startHook(MusicNotificationHook(lpparam.classLoader)) - startHook(DrawerHook(lpparam.classLoader)) - startHook(CoverHook(lpparam.classLoader)) - startHook(SubtitleHook(lpparam.classLoader)) - startHook(CopyHook(lpparam.classLoader)) - startHook(LiveRoomHook(lpparam.classLoader)) - startHook(QualityHook(lpparam.classLoader)) - startHook(DynamicHook(lpparam.classLoader)) - startHook(ProtoBufHook(lpparam.classLoader)) - startHook(PlayArcConfHook(lpparam.classLoader)) - startHook(TryWatchVipQualityHook(lpparam.classLoader)) - startHook(AllowMiniPlayHook(lpparam.classLoader)) - startHook(StartActivityHook(lpparam.classLoader)) - startHook(FullStoryHook(lpparam.classLoader)) - startHook(DialogBlurBackgroundHook(lpparam.classLoader)) - startHook(PlayerLongPressHook(lpparam.classLoader)) - startHook(BlockUpdateHook(lpparam.classLoader)) - startHook(VipSectionHook(lpparam.classLoader)) - startHook(CommentImageHook(lpparam.classLoader)) - startHook(WebViewHook(lpparam.classLoader)) - startHook(P2pHook(lpparam.classLoader)) - startHook(DanmakuHook(lpparam.classLoader)) - startHook(BangumiPageAdHook(lpparam.classLoader)) - startHook(VideoQualityHook(lpparam.classLoader)) + startHook { KillDelayBootHook(lpparam.classLoader) } + startHook { HintHook(lpparam.classLoader) } + startHook { BangumiSeasonHook(lpparam.classLoader) } + startHook { BangumiPlayUrlHook(lpparam.classLoader) } + startHook { PegasusHook(lpparam.classLoader) } + startHook { CustomThemeHook(lpparam.classLoader) } + startHook { TeenagersModeHook(lpparam.classLoader) } + startHook { JsonHook(lpparam.classLoader) } + startHook { ShareHook(lpparam.classLoader) } + startHook { AutoLikeHook(lpparam.classLoader) } + startHook { SettingHook(lpparam.classLoader) } + startHook { SplashHook(lpparam.classLoader) } + startHook { EnvHook(lpparam.classLoader) } + startHook { DownloadThreadHook(lpparam.classLoader) } + startHook { MusicNotificationHook(lpparam.classLoader) } + startHook { DrawerHook(lpparam.classLoader) } + startHook { CoverHook(lpparam.classLoader) } + startHook { SubtitleHook(lpparam.classLoader) } + startHook { CopyHook(lpparam.classLoader) } + startHook { LiveRoomHook(lpparam.classLoader) } + startHook { QualityHook(lpparam.classLoader) } + startHook { DynamicHook(lpparam.classLoader) } + startHook { ProtoBufHook(lpparam.classLoader) } + startHook { PlayArcConfHook(lpparam.classLoader) } + startHook { TryWatchVipQualityHook(lpparam.classLoader) } + startHook { AllowMiniPlayHook(lpparam.classLoader) } + startHook { StartActivityHook(lpparam.classLoader) } + startHook { FullStoryHook(lpparam.classLoader) } + startHook { DialogBlurBackgroundHook(lpparam.classLoader) } + startHook { PlayerLongPressHook(lpparam.classLoader) } + startHook { BlockUpdateHook(lpparam.classLoader) } + startHook { VipSectionHook(lpparam.classLoader) } + startHook { CommentImageHook(lpparam.classLoader) } + startHook { WebViewHook(lpparam.classLoader) } + startHook { P2pHook(lpparam.classLoader) } + startHook { DanmakuHook(lpparam.classLoader) } + startHook { BangumiPageAdHook(lpparam.classLoader) } + startHook { VideoQualityHook(lpparam.classLoader) } // startHook(PublishToFollowingHook(lpparam.classLoader)) - startHook(UposReplaceHook(lpparam.classLoader)) - startHook(SpeedHook(lpparam.classLoader)) - startHook(MultiWindowHook(lpparam.classLoader)) - startHook(LiveQualityHook(lpparam.classLoader)) + startHook { UposReplaceHook(lpparam.classLoader) } + startHook { SpeedHook(lpparam.classLoader) } + startHook { MultiWindowHook(lpparam.classLoader) } + startHook { LiveQualityHook(lpparam.classLoader) } } lpparam.processName.endsWith(":web") -> { BiliBiliPackage(lpparam.classLoader, param.args[0] as Context) CustomThemeHook(lpparam.classLoader).insertColorForWebProcess() - startHook(WebViewHook(lpparam.classLoader)) - startHook(ShareHook(lpparam.classLoader)) - startHook(DialogBlurBackgroundHook(lpparam.classLoader)) + startHook { WebViewHook(lpparam.classLoader) } + startHook { ShareHook(lpparam.classLoader) } + startHook { DialogBlurBackgroundHook(lpparam.classLoader) } } lpparam.processName.endsWith(":download") -> { BiliBiliPackage(lpparam.classLoader, param.args[0] as Context) - startHook(BangumiPlayUrlHook(lpparam.classLoader)) + startHook { BangumiPlayUrlHook(lpparam.classLoader) } } } } @@ -145,8 +145,17 @@ class XposedInit : IXposedHookLoadPackage, IXposedHookZygoteInit { } } + @Deprecated( + "Use startHook(hookerCreater: () -> BaseHook) instead", + ReplaceWith("startHook { hooker }") + ) private fun startHook(hooker: BaseHook) { + startHook { hooker } + } + + private fun startHook(hookerCreater: () -> BaseHook) { try { + val hooker = hookerCreater() hookers.add(hooker) hooker.startHook() } catch (e: Throwable) { diff --git a/app/src/main/java/me/iacn/biliroaming/hook/DialogBlurBackgroundHook.kt b/app/src/main/java/me/iacn/biliroaming/hook/DialogBlurBackgroundHook.kt index 5a53e44877..7cfea0bcc7 100644 --- a/app/src/main/java/me/iacn/biliroaming/hook/DialogBlurBackgroundHook.kt +++ b/app/src/main/java/me/iacn/biliroaming/hook/DialogBlurBackgroundHook.kt @@ -10,7 +10,7 @@ class DialogBlurBackgroundHook(mClassLoader: ClassLoader) : BaseHook(mClassLoade override fun startHook() { if (sPrefs.getBoolean("dialog_blur_background", false).not()) return Log.d("startHook: DialogBlurBackgroundHook") - Dialog::class.java.hookAfterMethod("show") { + Dialog::class.java.hookAfterMethod("onStart") { (it.thisObject as Dialog).window?.blurBackground() } } diff --git a/app/src/main/java/me/iacn/biliroaming/utils/Utils.kt b/app/src/main/java/me/iacn/biliroaming/utils/Utils.kt index f96468e98a..90c6edc677 100644 --- a/app/src/main/java/me/iacn/biliroaming/utils/Utils.kt +++ b/app/src/main/java/me/iacn/biliroaming/utils/Utils.kt @@ -28,6 +28,7 @@ import java.lang.reflect.Proxy import java.math.BigInteger import java.net.URL import java.util.* +import java.util.function.Consumer import kotlin.math.roundToInt import kotlin.reflect.KProperty @@ -335,7 +336,7 @@ fun Window.blurBackground() { addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND) attributes.blurBehindRadius = 50 setBackgroundBlurRadius(50) - val blurEnableListener = { enable: Boolean -> + val blurEnableListener = Consumer { enable: Boolean -> setDimAmount(if (enable) 0.1F else 0.6F) } decorView.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {