From 16e02783694a651dc07ad6357bbc2164a54ac534 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Fri, 30 Sep 2022 04:57:17 +0800 Subject: [PATCH] =?UTF-8?q?Modify=20support=20QQ=E3=80=81TIM=20night=20mod?= =?UTF-8?q?e=20theme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hook/factory/BasicHookFactory.kt | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/fankes/tsbattery/hook/factory/BasicHookFactory.kt b/app/src/main/java/com/fankes/tsbattery/hook/factory/BasicHookFactory.kt index d2ea3ab..6936225 100644 --- a/app/src/main/java/com/fankes/tsbattery/hook/factory/BasicHookFactory.kt +++ b/app/src/main/java/com/fankes/tsbattery/hook/factory/BasicHookFactory.kt @@ -24,15 +24,45 @@ package com.fankes.tsbattery.hook.factory import android.app.Activity import android.content.Context import android.content.Intent +import androidx.appcompat.app.AppCompatDelegate import com.fankes.tsbattery.const.JumpEvent +import com.fankes.tsbattery.const.PackageName +import com.fankes.tsbattery.hook.entity.QQTIMHooker.toClass import com.fankes.tsbattery.ui.activity.parasitic.ConfigActivity import com.highcapable.yukihookapi.YukiHookAPI +import com.highcapable.yukihookapi.hook.bean.VariousClass +import com.highcapable.yukihookapi.hook.factory.field +import com.highcapable.yukihookapi.hook.factory.method import com.highcapable.yukihookapi.hook.param.PackageParam import com.highcapable.yukihookapi.hook.type.android.PowerManager_WakeLockClass import kotlin.system.exitProcess +/** QQ、TIM 存在的类 */ +private const val MobileQQClass = "mqq.app.MobileQQ" + +/** QQ、TIM 存在的类 */ +private val ThemeUtilClass = VariousClass("${PackageName.QQ}.theme.ThemeUtil", "${PackageName.QQ}.vas.theme.api.ThemeUtil") + +/** + * QQ、TIM 主题是否为夜间模式 + * @return [Boolean] + */ +private fun Context.isQQNightMode() = runCatching { + ThemeUtilClass.get(classLoader).method { + name = "getUserCurrentThemeId" + paramCount = 1 + }.get().string(MobileQQClass.toClass(classLoader) + .field { name = "sMobileQQ" }.ignored().get().current(ignored = true)?.field { name = "mAppRuntime" }?.any() + ).let { it.endsWith(suffix = "1103") || it.endsWith(suffix = "2920") } +}.getOrNull() ?: false + /** 启动模块设置 [Activity] */ -fun Context.startModuleSettings() = startActivity(Intent(this, ConfigActivity::class.java)) +fun Context.startModuleSettings() { + /** 为 QQ、TIM 适配夜间模式 */ + if (packageName == PackageName.QQ || packageName == PackageName.TIM) + AppCompatDelegate.setDefaultNightMode(if (isQQNightMode()) AppCompatDelegate.MODE_NIGHT_YES else AppCompatDelegate.MODE_NIGHT_NO) + startActivity(Intent(this, ConfigActivity::class.java)) +} /** * 跳转模块设置 [Activity]