From 8ff8a71341c92d7d83dc12dadc27a0aeb5017c49 Mon Sep 17 00:00:00 2001 From: hd Date: Fri, 13 Dec 2024 22:08:18 +0800 Subject: [PATCH] feat: HideLoginDevicesTipsBar --- .../github/qauxv/util/dexkit/DexKitTarget.kt | 7 +++ .../me/hd/hook/HideLoginDevicesTipsBar.kt | 52 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 app/src/main/java/me/hd/hook/HideLoginDevicesTipsBar.kt diff --git a/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt b/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt index 24550a5dc1..94ea5b969e 100644 --- a/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt +++ b/app/src/main/java/io/github/qauxv/util/dexkit/DexKitTarget.kt @@ -1068,4 +1068,11 @@ data object DisableLightInteractionMethod : DexKitTarget.UsingStr() { val m = kotlin.runCatching { it.getMethodInstance(getHostClassLoader()) }.getOrNull() ?: return@filter false m.returnType == View::class.java && m.paramCount == 2 && m.parameterTypes[1] == ViewGroup::class.java } +} + +data object Hd_HideTipsBar_Method : DexKitTarget.UsingStr() { + override val findMethod = true + override val traitString = arrayOf("initBannerView | banner = ") + override val declaringClass = "Lcom/tencent/mobileqq/banner/BannerManager;" + override val filter = DexKitFilter.allowAll } \ No newline at end of file diff --git a/app/src/main/java/me/hd/hook/HideLoginDevicesTipsBar.kt b/app/src/main/java/me/hd/hook/HideLoginDevicesTipsBar.kt new file mode 100644 index 0000000000..0ed4c9b57d --- /dev/null +++ b/app/src/main/java/me/hd/hook/HideLoginDevicesTipsBar.kt @@ -0,0 +1,52 @@ +/* + * QAuxiliary - An Xposed module for QQ/TIM + * Copyright (C) 2019-2024 QAuxiliary developers + * https://github.com/cinit/QAuxiliary + * + * This software is an opensource software: you can redistribute it + * and/or modify it under the terms of the General Public License + * as published by the Free Software Foundation; either + * version 3 of the License, or any later version as published + * by QAuxiliary contributors. + * + * This software 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 General Public License for more details. + * + * You should have received a copy of the General Public License + * along with this software. + * If not, see + * . + */ + +package me.hd.hook + +import cc.ioctl.util.hookBeforeIfEnabled +import io.github.qauxv.base.annotation.FunctionHookEntry +import io.github.qauxv.base.annotation.UiItemAgentEntry +import io.github.qauxv.dsl.FunctionEntryRouter +import io.github.qauxv.hook.CommonSwitchFunctionHook +import io.github.qauxv.util.QQVersion +import io.github.qauxv.util.dexkit.DexKit +import io.github.qauxv.util.dexkit.Hd_HideTipsBar_Method +import io.github.qauxv.util.requireMinQQVersion + +@FunctionHookEntry +@UiItemAgentEntry +object HideLoginDevicesTipsBar : CommonSwitchFunctionHook( + targets = arrayOf(Hd_HideTipsBar_Method) +) { + + override val name = "隐藏登录设备(已登录 Windows、Pad)提示" + override val extraSearchKeywords = arrayOf("Windows", "Pad") + override val uiItemLocation = FunctionEntryRouter.Locations.Simplify.MAIN_UI_TITLE + override val isAvailable = requireMinQQVersion(QQVersion.QQ_8_9_88) + + override fun initOnce(): Boolean { + hookBeforeIfEnabled(DexKit.requireMethodFromCache(Hd_HideTipsBar_Method)) { param -> + param.result = null + } + return true + } +} \ No newline at end of file