mirror of
https://github.com/fankes/TSBattery.git
synced 2025-09-07 03:06:06 +08:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
81331dfe81
|
|||
20f1ceca4d
|
|||
fc8589f1ee
|
|||
|
67378b2ebf | ||
|
bf4ecd8345 | ||
6e8d900dc5
|
|||
3d12d3f4a5
|
|||
4b36437dac
|
|||
93789f163b
|
|||
32d8937ddb
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://github.com/fankes/TSBattery)
|
[](https://github.com/fankes/TSBattery)
|
||||||
[](https://github.com/fankes/TSBattery/blob/master/LICENSE)
|
[](https://github.com/fankes/TSBattery/blob/master/LICENSE)
|
||||||
[](https://github.com/fankes/TSBattery/releases)
|
[](https://github.com/fankes/TSBattery/releases)
|
||||||
[](https://github.com/fankes/TSBattery/releases)
|
[](https://github.com/fankes/TSBattery/releases)
|
||||||
[](https://github.com/Xposed-Modules-Repo/com.fankes.tsbattery/releases)
|
[](https://github.com/Xposed-Modules-Repo/com.fankes.tsbattery/releases)
|
||||||
[](https://t.me/XiaofangInternet)
|
[](https://t.me/XiaofangInternet)
|
||||||
|
@@ -84,6 +84,9 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 是否完全支持当前版本 */
|
||||||
|
private var isHookClientSupport = true
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 这个类 QQ 的 BaseChatPie 是控制聊天界面的
|
* 这个类 QQ 的 BaseChatPie 是控制聊天界面的
|
||||||
*
|
*
|
||||||
@@ -134,11 +137,23 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
interceptBaseChatPie(methodName = "bl")
|
interceptBaseChatPie(methodName = "bl")
|
||||||
interceptBaseChatPie(methodName = "bm")
|
interceptBaseChatPie(methodName = "bm")
|
||||||
}
|
}
|
||||||
"8.8.93" -> {
|
"8.8.93", "8.8.95" -> {
|
||||||
interceptBaseChatPie(methodName = "J3")
|
interceptBaseChatPie(methodName = "J3")
|
||||||
interceptBaseChatPie(methodName = "S")
|
interceptBaseChatPie(methodName = "S")
|
||||||
}
|
}
|
||||||
else -> loggerD(msg = "$version not supported!")
|
"8.8.98" -> {
|
||||||
|
interceptBaseChatPie(methodName = "M3")
|
||||||
|
interceptBaseChatPie(methodName = "S")
|
||||||
|
}
|
||||||
|
/** 8.9.0 贡献者:StarWishsama */
|
||||||
|
"8.9.0", "8.9.1" -> {
|
||||||
|
interceptBaseChatPie(methodName = "N3")
|
||||||
|
interceptBaseChatPie(methodName = "S")
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
isHookClientSupport = false
|
||||||
|
loggerD(msg = "$version not supported!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,11 +207,12 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 提示模块运行信息 QQ、TIM、微信
|
* 提示模块运行信息 QQ、TIM、微信
|
||||||
* @param isQQTIM 是否为 QQ、TIM
|
* @param isQQ 是否为 QQ
|
||||||
|
* @param isTIM 是否为 TIM
|
||||||
*/
|
*/
|
||||||
private fun PackageParam.hookModuleRunningInfo(isQQTIM: Boolean) =
|
private fun PackageParam.hookModuleRunningInfo(isQQ: Boolean = false, isTIM: Boolean = false) =
|
||||||
when {
|
when {
|
||||||
isQQTIM -> SplashActivityClass.hook {
|
isQQ || isTIM -> SplashActivityClass.hook {
|
||||||
/**
|
/**
|
||||||
* Hook 启动界面的第一个 [Activity]
|
* Hook 启动界面的第一个 [Activity]
|
||||||
* QQ 和 TIM 都是一样的类
|
* QQ 和 TIM 都是一样的类
|
||||||
@@ -213,7 +229,9 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
showDialog {
|
showDialog {
|
||||||
title = "TSBattery 已激活"
|
title = "TSBattery 已激活"
|
||||||
msg = "[提示模块运行信息功能已打开]\n\n" +
|
msg = "[提示模块运行信息功能已打开]\n\n" +
|
||||||
"模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n" +
|
(if (isQQ && isHookClientSupport.not())
|
||||||
|
"❎ 当前版本 $versionName($versionCode) 不在兼容列表,请自行测试是否生效~\n\n"
|
||||||
|
else "✅ 模块工作看起来一切正常,请自行测试是否能达到省电效果。\n\n") +
|
||||||
"已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" +
|
"已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" +
|
||||||
"当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
|
"当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
|
||||||
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
|
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
|
||||||
@@ -352,7 +370,7 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
method {
|
method {
|
||||||
name = "setRightText"
|
name = "setRightText"
|
||||||
param(CharSequenceType)
|
param(CharSequenceType)
|
||||||
}.call(prefs.get(DataConst.ENABLE_MODULE_VERSION))
|
}.call("${if (isQQ && isHookClientSupport.not()) "❎" else "✅"} ${prefs.get(DataConst.ENABLE_MODULE_VERSION)}")
|
||||||
method {
|
method {
|
||||||
name = "setBgType"
|
name = "setBgType"
|
||||||
param(IntType)
|
param(IntType)
|
||||||
@@ -362,7 +380,9 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
instance<Activity>().apply {
|
instance<Activity>().apply {
|
||||||
showDialog {
|
showDialog {
|
||||||
title = "TSBattery 守护中"
|
title = "TSBattery 守护中"
|
||||||
msg = "已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" +
|
msg = (if (isQQ && isHookClientSupport.not())
|
||||||
|
"❎ 当前版本 $versionName($versionCode) 不在兼容列表,请自行测试是否生效~\n\n" else "") +
|
||||||
|
"已生效模块版本:${prefs.get(DataConst.ENABLE_MODULE_VERSION)}\n" +
|
||||||
"当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
|
"当前模式:${if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) "保守模式" else "完全模式"}" +
|
||||||
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
|
"\n\n包名:${packageName}\n版本:$versionName($versionCode)" +
|
||||||
"\n\n模块只对挂后台锁屏情况下有省电效果," +
|
"\n\n模块只对挂后台锁屏情况下有省电效果," +
|
||||||
@@ -413,19 +433,11 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
hookSystemWakeLock()
|
hookSystemWakeLock()
|
||||||
hookNotification()
|
hookNotification()
|
||||||
hookCoreService(isQQ = true)
|
hookCoreService(isQQ = true)
|
||||||
hookModuleRunningInfo(isQQTIM = true)
|
hookModuleRunningInfo(isQQ = true)
|
||||||
hookQQSettingsSettingActivity(isQQ = true)
|
hookQQSettingsSettingActivity(isQQ = true)
|
||||||
if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) return@loadApp
|
if (prefs.get(DataConst.ENABLE_QQTIM_WHITE_MODE)) return@loadApp
|
||||||
/** 通过在 [SplashActivityClass] 里取到应用的版本号 */
|
/** 通过在生命周期里取到应用的版本号 */
|
||||||
SplashActivityClass.hook {
|
onAppLifecycle { onCreate { hookQQBaseChatPie(versionName) } }
|
||||||
injectMember {
|
|
||||||
method {
|
|
||||||
name = "doOnCreate"
|
|
||||||
param(BundleClass)
|
|
||||||
}
|
|
||||||
afterHook { hookQQBaseChatPie(instance<Activity>().versionName) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 干掉消息收发功能的电源锁
|
* 干掉消息收发功能的电源锁
|
||||||
* 每个版本的差异暂未做排查
|
* 每个版本的差异暂未做排查
|
||||||
@@ -634,14 +646,14 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
hookSystemWakeLock()
|
hookSystemWakeLock()
|
||||||
hookNotification()
|
hookNotification()
|
||||||
hookCoreService(isQQ = false)
|
hookCoreService(isQQ = false)
|
||||||
hookModuleRunningInfo(isQQTIM = true)
|
hookModuleRunningInfo(isTIM = true)
|
||||||
hookQQSettingsSettingActivity(isQQ = false)
|
hookQQSettingsSettingActivity(isQQ = false)
|
||||||
}
|
}
|
||||||
loadApp(WECHAT_PACKAGE_NAME) {
|
loadApp(WECHAT_PACKAGE_NAME) {
|
||||||
if (prefs.get(DataConst.DISABLE_WECHAT_HOOK)) return@loadApp
|
if (prefs.get(DataConst.DISABLE_WECHAT_HOOK)) return@loadApp
|
||||||
hookSystemWakeLock()
|
hookSystemWakeLock()
|
||||||
hookModuleRunningInfo(isQQTIM = false)
|
hookModuleRunningInfo()
|
||||||
loggerD(msg = "ウイチャット:それが機能するかどうかはわかりませんでした")
|
loggerD(msg = "ウイチャット:それが機能するかどうかはわかりませんでした")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -46,8 +46,20 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
|||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
private const val moduleVersion = BuildConfig.VERSION_NAME
|
private const val moduleVersion = BuildConfig.VERSION_NAME
|
||||||
private const val qqSupportVersion =
|
private val qqSupportVersions = arrayOf(
|
||||||
"8.2.11(Play)、8.8.17、8.8.23、8.8.35、8.8.38、8.8.50、8.8.55、8.8.68、8.8.80、8.8.83、8.8.85、8.8.88、8.8.90、8.8.93 (8.2.11、8.5.5~8.8.93)"
|
"8.2.11(Play)", "8.8.17", "8.8.23",
|
||||||
|
"8.8.35", "8.8.38", "8.8.50", "8.8.55",
|
||||||
|
"8.8.68", "8.8.80", "8.8.83", "8.8.85",
|
||||||
|
"8.8.88", "8.8.90", "8.8.93", "8.8.95",
|
||||||
|
"8.8.98", "8.9.0", "8.9.1"
|
||||||
|
)
|
||||||
|
private val qqSupportVersion by lazy {
|
||||||
|
if (qqSupportVersions.isNotEmpty()) {
|
||||||
|
var value = ""
|
||||||
|
qqSupportVersions.forEach { value += "$it、" }
|
||||||
|
"${value.trim().let { it.substring(0, it.lastIndex) }}\n\n其余版本请自行测试是否有效。"
|
||||||
|
} else "empty"
|
||||||
|
}
|
||||||
private const val timSupportVersion = "2+、3+ (并未完全测试每个版本)"
|
private const val timSupportVersion = "2+、3+ (并未完全测试每个版本)"
|
||||||
private const val wechatSupportVersion = "全版本仅支持基础省电,更多功能依然画饼"
|
private const val wechatSupportVersion = "全版本仅支持基础省电,更多功能依然画饼"
|
||||||
|
|
||||||
@@ -96,8 +108,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
|||||||
msg = "若你的设备已 Root,推荐使用 LSPosed 激活模块,太极可能会出现模块设置无法保存的问题。"
|
msg = "若你的设备已 Root,推荐使用 LSPosed 激活模块,太极可能会出现模块设置无法保存的问题。"
|
||||||
confirmButton(text = "我知道了")
|
confirmButton(text = "我知道了")
|
||||||
}
|
}
|
||||||
/** 检测应用转生 */
|
/** 检测应用转生 - 如果模块已激活就不再检测 */
|
||||||
if (("com.bug.xposed").isInstall)
|
if (("com.bug.xposed").isInstall && YukiHookAPI.Status.isModuleActive.not())
|
||||||
showDialog {
|
showDialog {
|
||||||
title = "环境异常"
|
title = "环境异常"
|
||||||
msg = "检测到“应用转生”已被安装,为了保证模块的安全和稳定,请卸载更换其他 Hook 框架后才能继续使用。"
|
msg = "检测到“应用转生”已被安装,为了保证模块的安全和稳定,请卸载更换其他 Hook 框架后才能继续使用。"
|
||||||
|
@@ -5,8 +5,8 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
appVersionName = "3.96"
|
appVersionName = "3.99"
|
||||||
appVersionCode = 19
|
appVersionCode = 22
|
||||||
enableR8 = true
|
enableR8 = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user