diff --git a/app/src/main/java/com/fankes/tsbattery/hook/HookEntry.kt b/app/src/main/java/com/fankes/tsbattery/hook/HookEntry.kt index 43eb0c5..e92fca7 100644 --- a/app/src/main/java/com/fankes/tsbattery/hook/HookEntry.kt +++ b/app/src/main/java/com/fankes/tsbattery/hook/HookEntry.kt @@ -257,50 +257,18 @@ class HookEntry : YukiHookXposedInitProxy { * @param isQQ 是否为 QQ - 单独处理 */ private fun PackageParam.hookCoreService(isQQ: Boolean) { - if (prefs.getBoolean(ENABLE_QQTIM_CORESERVICE_BAN)) - CoreServiceClass.hook { - if (isQQ) { - injectMember { - method { name = "startTempService" } - intercept() - } - injectMember { - method { - name = "startCoreService" - param(BooleanType) - } - intercept() - } - injectMember { - method { - name = "onStartCommand" - param(IntentClass, IntType, IntType) - } - replaceTo(any = 2) - } + CoreServiceClass.hook { + if (isQQ) { + injectMember { + method { name = "startTempService" } + intercept() } injectMember { - method { name = "onCreate" } - afterHook { - instance().apply { - stopForeground(true) - stopService(Intent(applicationContext, javaClass)) - loggerD(msg = "Shutdown CoreService OK!") - } - } - } - } - if (prefs.getBoolean(ENABLE_QQTIM_CORESERVICE_CHILD_BAN)) - CoreService_KernelServiceClass.hook { - injectMember { - method { name = "onCreate" } - afterHook { - instance().apply { - stopForeground(true) - stopService(Intent(applicationContext, javaClass)) - loggerD(msg = "Shutdown CoreService\$KernelService OK!") - } + method { + name = "startCoreService" + param(BooleanType) } + intercept() } injectMember { method { @@ -310,6 +278,36 @@ class HookEntry : YukiHookXposedInitProxy { replaceTo(any = 2) } } + injectMember { + method { name = "onCreate" } + afterHook { + instance().apply { + stopForeground(true) + stopService(Intent(applicationContext, javaClass)) + loggerD(msg = "Shutdown CoreService OK!") + } + } + } + }.by { prefs.getBoolean(ENABLE_QQTIM_CORESERVICE_BAN) } + CoreService_KernelServiceClass.hook { + injectMember { + method { name = "onCreate" } + afterHook { + instance().apply { + stopForeground(true) + stopService(Intent(applicationContext, javaClass)) + loggerD(msg = "Shutdown CoreService\$KernelService OK!") + } + } + } + injectMember { + method { + name = "onStartCommand" + param(IntentClass, IntType, IntType) + } + replaceTo(any = 2) + } + }.by { prefs.getBoolean(ENABLE_QQTIM_CORESERVICE_CHILD_BAN) } } override fun onInit() = configs { diff --git a/app/src/main/java/com/fankes/tsbattery/ui/view/MaterialSwitch.kt b/app/src/main/java/com/fankes/tsbattery/ui/view/MaterialSwitch.kt index fe8acd3..e9c0153 100644 --- a/app/src/main/java/com/fankes/tsbattery/ui/view/MaterialSwitch.kt +++ b/app/src/main/java/com/fankes/tsbattery/ui/view/MaterialSwitch.kt @@ -26,6 +26,7 @@ package com.fankes.tsbattery.ui.view import android.content.Context import android.content.res.ColorStateList import android.graphics.Color +import android.text.TextUtils import android.util.AttributeSet import androidx.appcompat.widget.SwitchCompat import com.fankes.tsbattery.utils.drawable.drawabletoolbox.DrawableBuilder @@ -64,5 +65,7 @@ class MaterialSwitch(context: Context, attrs: AttributeSet?) : SwitchCompat(cont 0xFFCCCCCC.toInt(), 0xFFCCCCCC.toInt() ) + isSingleLine = true + ellipsize = TextUtils.TruncateAt.END } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a7eb647..73203bb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -546,8 +546,31 @@ android:gravity="center" android:orientation="vertical" android:paddingLeft="15dp" + android:paddingTop="15dp" android:paddingRight="15dp"> + + + + + + + + + + + + + + + android:padding="15dp" + android:paddingTop="15dp"> - + android:layout_marginEnd="10dp" + android:src="@mipmap/ic_help" /> @@ -669,8 +714,8 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" - android:text="Q.这个模块是做什么的?\nA.此模块的诞生来源于国内厂商毒瘤 APP 强行霸占后台耗电,QQ 在 8.6.0 版本以后也只是接入了 HMS 推送,但是可笑的是开发组却并没有删除之前疯狂耗电的接收消息方法,于是这个模块就诞生了。" + android:lineSpacingExtra="10dp" + android:text="Q.这个模块是做什么的?\nA.此模块的诞生来源于国内厂商毒瘤 APP 强行霸占后台耗电,QQ 在 8.6.0 版本以后也只是接入了 HMS 推送,但是可笑的是开发组却并没有删除之前疯狂耗电的接收消息方法,于是这个模块就因此而诞生了。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -679,7 +724,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.原理是什么?\nA.模块有两套工作方式,一种是针对 QQ、TIM Hook 掉系统自身的电源锁“WakeLock”使其不能影响系统休眠,这样子在锁屏的时候 QQ、TIM 就可以进入睡眠状态。第二种就是针对 QQ、TIM 删除其自身的无用耗电疯狂循环检测后台强行保活服务。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -689,7 +734,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.如何使用?\nA.目前模块支持 LSPosed、EdXposed 以及太极(无极)框架,在太极和 LSPosed 的作用域中,只需勾选 QQ、TIM、微信即可,模块可以做到即插即用,激活后无需重启手机,重启 QQ、TIM 或微信就可以了。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -699,7 +744,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.激活后一定可以非常省电吗?\nA.并不,模块只能减少 QQ、TIM、微信的耗电,但是请务必记住这一点,省电只是一个理论上的东西,实际水平由你使用的系统和硬件决定,如果你在前台疯狂使用 QQ、TIM,那么照样会耗电,模块只能保证后台运行和锁屏时毒瘤不会消耗过多的无用的电量,仅此而已。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -709,7 +754,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.模块是否需要挂后台?\nA.模块完全不需要挂后台,模块只是一个控制和显示的工具,真正的任务交由 Hook 处理,若出现失效的情况请发送模块运行日志给我们而不是将模块挂后台。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -719,7 +764,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.关于目前微信的适配情况?\nA.微信适配尚在实验阶段,敬请期待。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -729,7 +774,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.如何对单独的 APP 生效模块?\nA.请在 LSPosed 中勾选对应定义域即可,我们不建议使用 EdXposed。" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -738,7 +783,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:alpha="0.8" - android:lineSpacingExtra="6dp" + android:lineSpacingExtra="10dp" android:text="Q.如何反馈问题?\nA.酷安关注 @星夜不荟" android:textColor="@color/colorTextDark" android:textSize="12sp" /> @@ -794,19 +839,34 @@ android:textSize="16sp" /> - + android:gravity="center|start" + android:orientation="horizontal" + android:padding="10dp"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/ic_bug.png b/app/src/main/res/mipmap-xxhdpi/ic_bug.png new file mode 100644 index 0000000..00bbd55 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_bug.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_help.png b/app/src/main/res/mipmap-xxhdpi/ic_help.png new file mode 100644 index 0000000..18cd31f Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_help.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home.png b/app/src/main/res/mipmap-xxhdpi/ic_home.png new file mode 100644 index 0000000..38fd182 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_yukihookapi.png b/app/src/main/res/mipmap-xxhdpi/ic_yukihookapi.png new file mode 100644 index 0000000..f16902d Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_yukihookapi.png differ