优化代码

This commit is contained in:
2022-01-25 05:22:13 +08:00
parent 4ecc694dd4
commit 69faade0e4
2 changed files with 76 additions and 71 deletions

View File

@@ -192,43 +192,79 @@ class HookMain : IXposedHookLoadPackage {
}) })
} }
/** 提示模块运行信息 QQ、TIM */ /** 提示模块运行信息 QQ、TIM、微信 */
private fun XC_LoadPackage.LoadPackageParam.hookModuleRunningInfo() = private fun XC_LoadPackage.LoadPackageParam.hookModuleRunningInfo() =
runWithoutError("SplashActivity") { if (packageName != WECHAT_PACKAGE_NAME)
/** 判断是否开启提示模块运行信息 */ runWithoutError("SplashActivity") {
if (XPrefUtils.getBoolean(HookMedium.ENABLE_RUN_INFO)) /** 判断是否开启提示模块运行信息 */
/** if (XPrefUtils.getBoolean(HookMedium.ENABLE_RUN_INFO))
* Hook 启动界面的第一个 [Activity] XposedHelpers.findAndHookMethod(
* QQ 和 TIM 都是一样的类 "$QQ_PACKAGE_NAME.activity.SplashActivity",
* 在里面加入提示运行信息的对话框测试模块是否激活 classLoader,
*/ "doOnCreate",
XposedHelpers.findAndHookMethod( Bundle::class.java,
"$QQ_PACKAGE_NAME.activity.SplashActivity", object : XC_MethodHook() {
classLoader,
"doOnCreate",
Bundle::class.java,
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam?) { override fun afterHookedMethod(param: MethodHookParam?) {
(param?.thisObject as? Activity?)?.apply { /**
showDialog { * Hook 启动界面的第一个 [Activity]
title = "TSBattery 已激活" * QQ 和 TIM 都是一样的类
msg = "[提示模块运行信息功能已打开]\n\n" + * 在里面加入提示运行信息的对话框测试模块是否激活
"模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n" + */
"已生效模块版本:${XPrefUtils.getString(HookMedium.ENABLE_MODULE_VERSION)}\n" + (param?.thisObject as? Activity?)?.apply {
"当前模式:${if (XPrefUtils.getBoolean(HookMedium.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" + showDialog {
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" + title = "TSBattery 已激活"
"\n\n模块只对挂后台锁屏情况下有省电效果,请不要将过多的群提醒,消息通知打开,这样子在使用过程时照样会极其耗电。\n\n" + msg = "[提示模块运行信息功能已打开]\n\n" +
"如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭\n\n" + "模块工作看起来一切正常,请自行测试是否能达到省电效果\n\n" +
"持续常驻使用 QQ 依然会耗电,任何软件都是如此,模块无法帮你做到前台不耗电,永远记住这一点。\n\n" + "已生效模块版本:${XPrefUtils.getString(HookMedium.ENABLE_MODULE_VERSION)}\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。" "当前模式:${if (XPrefUtils.getBoolean(HookMedium.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
confirmButton(text = "我知道了") "\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
noCancelable() "\n\n模块只对挂后台锁屏情况下有省电效果,请不要将过多的群提醒,消息通知打开,这样子在使用过程时照样会极其耗电。\n\n" +
"如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" +
"持续常驻使用 QQ 依然会耗电,任何软件都是如此,模块无法帮你做到前台不耗电,永远记住这一点。\n\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。"
confirmButton(text = "我知道了")
noCancelable()
}
} }
} }
} })
}) }
} else
runWithoutError("LauncherUI") {
/** 判断是否开启提示模块运行信息 */
if (XPrefUtils.getBoolean(HookMedium.ENABLE_RUN_INFO))
XposedHelpers.findAndHookMethod(
"$WECHAT_PACKAGE_NAME.ui.LauncherUI",
classLoader,
"onCreate",
Bundle::class.java,
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam?) {
/**
* Hook 启动界面的第一个 [Activity]
* 在里面加入提示运行信息的对话框测试模块是否激活
*/
(param?.thisObject as? Activity?)?.apply {
showDialog(isUseBlackTheme = true) {
title = "TSBattery 已激活"
msg = "[提示模块运行信息功能已打开]\n\n" +
"模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n" +
"已生效模块版本:${XPrefUtils.getString(HookMedium.ENABLE_MODULE_VERSION)}\n" +
"当前模式:基础省电" +
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
"\n\n当前只支持微信的基础省电,即系统电源锁,后续会继续适配微信相关的省电功能(在新建文件夹了)。\n\n" +
"如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" +
"持续常驻使用微信依然会耗电,任何软件都是如此,模块无法帮你做到前台不耗电,永远记住这一点。\n\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。"
confirmButton(text = "我知道了")
noCancelable()
}
}
}
})
}
/** Hook CoreService QQ、TIM */ /** Hook CoreService QQ、TIM */
private fun XC_LoadPackage.LoadPackageParam.hookCoreService() { private fun XC_LoadPackage.LoadPackageParam.hookCoreService() {
@@ -498,43 +534,12 @@ class HookMain : IXposedHookLoadPackage {
WECHAT_PACKAGE_NAME -> { WECHAT_PACKAGE_NAME -> {
/** 判断是否关闭 Hook */ /** 判断是否关闭 Hook */
if (XPrefUtils.getBoolean(HookMedium.DISABLE_WECHAT_HOOK)) return if (XPrefUtils.getBoolean(HookMedium.DISABLE_WECHAT_HOOK)) return
lpparam.hookSystemWakeLock() lpparam.apply {
/** 判断是否开启提示模块运行信息 */ hookSystemWakeLock()
if (XPrefUtils.getBoolean(HookMedium.ENABLE_RUN_INFO)) hookModuleRunningInfo()
runWithoutError("LauncherUI") { }
/**
* Hook 启动界面的第一个 [Activity]
* 在里面加入提示运行信息的对话框测试模块是否激活
*/
XposedHelpers.findAndHookMethod(
"$WECHAT_PACKAGE_NAME.ui.LauncherUI",
lpparam.classLoader,
"onCreate",
Bundle::class.java,
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam?) {
(param?.thisObject as? Activity?)?.apply {
showDialog(isUseBlackTheme = true) {
title = "TSBattery 已激活"
msg = "[提示模块运行信息功能已打开]\n\n" +
"模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n" +
"已生效模块版本:${XPrefUtils.getString(HookMedium.ENABLE_MODULE_VERSION)}\n" +
"当前模式:基础省电" +
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
"\n\n当前只支持微信的基础省电,即系统电源锁,后续会继续适配微信相关的省电功能(在新建文件夹了)。\n\n" +
"如果你不想看到此提示。请在模块设置中关闭“提示模块运行信息”,此设置默认关闭。\n\n" +
"持续常驻使用微信依然会耗电,任何软件都是如此,模块无法帮你做到前台不耗电,永远记住这一点。\n\n" +
"开发者 酷安 @星夜不荟\n未经允许禁止转载、修改或复制我的劳动成果。"
confirmButton(text = "我知道了")
noCancelable()
}
}
}
})
}
// TODO 新建文件夹 // TODO 新建文件夹
logD("それが機能するかどうかはわかりません") logD("ウイチャット:それが機能するかどうかはわかりませんでした")
} }
} }
} }

View File

@@ -316,7 +316,7 @@
android:id="@+id/qqtim_protect_mode_switch" android:id="@+id/qqtim_protect_mode_switch"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="启用保守模式" android:text="启用保守模式 [QQ]"
android:textColor="#FF323B42" android:textColor="#FF323B42"
android:textSize="15sp" /> android:textSize="15sp" />
@@ -326,7 +326,7 @@
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:alpha="0.6" android:alpha="0.6"
android:lineSpacingExtra="6dp" android:lineSpacingExtra="6dp"
android:text="此选项默认关闭,默认情况下模块将会干掉 QQ 和 TIM 自身的电源锁控制类,开启后模块将只对系统电源锁生效,如果你的 QQ 或 TIM 视频通话等设置发生了故障,可以尝试开启这个功能,开启后请重启 QQ 或 TIM。" android:text="此选项默认关闭,默认情况下模块将会干掉 QQ 自身的电源锁控制类,开启后模块将只对系统电源锁生效,如果你的 QQ 视频通话等设置发生了故障,可以尝试开启这个功能,开启后请重启 QQ。"
android:textColor="#777777" android:textColor="#777777"
android:textSize="12sp" /> android:textSize="12sp" />