From 3ce5d1b1f29cd8511d46570f404bdbf561059e1c Mon Sep 17 00:00:00 2001 From: LittleTurtle2333 Date: Sun, 5 Mar 2023 22:06:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DMIUI14=E4=B8=8A=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E4=B8=AD=E5=BF=83=E7=9A=84=E5=A4=A9=E6=B0=94=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../t/systemui/NewControlCenterWeatherForT.kt | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 app/src/main/java/com/lt2333/simplicitytools/hooks/rules/t/systemui/NewControlCenterWeatherForT.kt diff --git a/app/src/main/java/com/lt2333/simplicitytools/hooks/rules/t/systemui/NewControlCenterWeatherForT.kt b/app/src/main/java/com/lt2333/simplicitytools/hooks/rules/t/systemui/NewControlCenterWeatherForT.kt new file mode 100644 index 00000000..6e9a4562 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hooks/rules/t/systemui/NewControlCenterWeatherForT.kt @@ -0,0 +1,84 @@ +package com.lt2333.simplicitytools.hooks.rules.t.systemui + +import android.content.pm.ApplicationInfo +import android.widget.TextView +import com.highcapable.yukihookapi.hook.entity.YukiBaseHooker +import com.highcapable.yukihookapi.hook.factory.current +import com.lt2333.simplicitytools.utils.XSPUtils +import com.lt2333.simplicitytools.utils.hasEnable +import com.lt2333.simplicitytools.views.WeatherData + +object NewControlCenterWeatherForT : YukiBaseHooker() { + override fun onHook() = hasEnable("control_center_weather") { + lateinit var weather: WeatherData + var clockId: Int = -2 + val isDisplayCity = XSPUtils.getBoolean("notification_weather_city", false) + + "com.android.systemui.controlcenter.phone.widget.ControlCenterDateView".hook { + injectMember { + method { + name = "onDetachedFromWindow" + superClass(true) + } + beforeHook { + if (instance().id == clockId) { + weather.onDetachedFromWindow() + } + } + } + } + + "com.android.systemui.controlcenter.phone.widget.ControlCenterDateView".hook { + injectMember { + method { + name = "setText" + superClass(true) + } + beforeHook { + val time = this.args[0]?.toString() + val view = instance() + if (view.id == clockId && time != null) { + this.args[0] = "${weather.weatherData}$time" + } + } + } + } + + "com.android.systemui.shared.plugins.PluginInstance\$Factory".hook { + injectMember { + method { + name = "getClassLoader" + } + afterHook { + val appInfo = this.args[0] as ApplicationInfo + val classLoader = this.result as ClassLoader + if (appInfo.packageName == "miui.systemui.plugin") { + "miui.systemui.controlcenter.windowview.MainPanelHeaderController".hook { + injectMember { + appClassLoader = classLoader + method { + name = "addClockViews" + } + afterHook { + val dateView = instance.current().field { name = "dateView" }.cast() + if (dateView != null) { + clockId = dateView.id + } + weather = WeatherData(dateView?.context, isDisplayCity) + weather.callBacks = { + dateView?.current { + method { + name = "updateTime" + superClass(true) + }.call() + } + } + } + } + }.onHookClassNotFoundFailure { } + } + } + } + } + } +} \ No newline at end of file