From 2475e469f43c3872b77133363d06f80416d77d74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B9=8C=E5=A0=86=E5=B0=8F=E9=80=8F=E6=98=8E?=
<841474544@qq.com>
Date: Wed, 2 Mar 2022 01:50:52 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=98=B2=E6=AD=A2=E6=81=A2?=
=?UTF-8?q?=E5=A4=8D=E7=94=B5=E6=B1=A0=E4=BC=98=E5=8C=96=E7=99=BD=E5=90=8D?=
=?UTF-8?q?=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../activity/SettingsActivity.kt | 29 +++++++++++++++++
.../simplicitytools/hook/app/PowerKeeper.kt | 3 ++
...tRecoveryOfBatteryOptimizationWhitelist.kt | 31 +++++++++++++++++++
app/src/main/res/values/strings.xml | 4 +++
4 files changed, 67 insertions(+)
create mode 100644 app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/PreventRecoveryOfBatteryOptimizationWhitelist.kt
diff --git a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt
index 44c43075..1e175f97 100644
--- a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt
+++ b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt
@@ -338,6 +338,35 @@ class SettingsActivity : MIUIActivity() {
SwitchV("unlock_unlimited_cropping")
)
)
+ add(
+ TextSummaryWithSwitchV(
+ TextSummaryV(
+ textId = R.string.prevent_recovery_of_battery_optimization_white_list,
+ tipsId = R.string.failed_after_restart
+ ),
+ SwitchV("prevent_recovery_of_battery_optimization_white_list")
+ )
+ )
+ add(
+ TextSummaryArrowV(
+ TextSummaryV(
+ textId = R.string.battery_optimization,
+ tipsId = R.string.battery_optimization_summary,
+ onClickListener = {
+ try {
+ val intent = Intent()
+ val comp = ComponentName(
+ "com.android.settings",
+ "com.android.settings.Settings\$HighPowerApplicationsActivity"
+ )
+ intent.component = comp
+ startActivity(intent)
+ } catch (e: Exception) {
+ Toast.makeText(activity, "启动失败,可能是不支持", Toast.LENGTH_LONG).show()
+ }
+ })
+ )
+ )
add(LineV())
add(TitleTextV(resId = R.string.about))
add(
diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt
index def4bac7..4dd8543d 100644
--- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt
+++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt
@@ -1,6 +1,7 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.powerkeeper.LockMaxFps
+import com.lt2333.simplicitytools.hook.app.powerkeeper.PreventRecoveryOfBatteryOptimizationWhitelist
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
@@ -11,6 +12,8 @@ class PowerKeeper : IXposedHookLoadPackage {
XposedBridge.log("成功Hook: "+javaClass.simpleName)
//锁定最高刷新率
LockMaxFps().handleLoadPackage(lpparam)
+ //防止恢复电池优化白名单
+ PreventRecoveryOfBatteryOptimizationWhitelist().handleLoadPackage(lpparam)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/PreventRecoveryOfBatteryOptimizationWhitelist.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/PreventRecoveryOfBatteryOptimizationWhitelist.kt
new file mode 100644
index 00000000..79557571
--- /dev/null
+++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/PreventRecoveryOfBatteryOptimizationWhitelist.kt
@@ -0,0 +1,31 @@
+package com.lt2333.simplicitytools.hook.app.powerkeeper
+
+import com.lt2333.simplicitytools.util.XSPUtils
+import de.robv.android.xposed.IXposedHookLoadPackage
+import de.robv.android.xposed.XC_MethodHook
+import de.robv.android.xposed.XposedHelpers
+import de.robv.android.xposed.callbacks.XC_LoadPackage
+
+class PreventRecoveryOfBatteryOptimizationWhitelist : IXposedHookLoadPackage {
+ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
+ val classIfExists = XposedHelpers.findClassIfExists(
+ "com.miui.powerkeeper.statemachine.ForceDozeController",
+ lpparam.classLoader
+ )
+ XposedHelpers.findAndHookMethod(
+ classIfExists,
+ "restoreWhiteListAppsIfQuitForceIdle",
+ object : XC_MethodHook() {
+ override fun beforeHookedMethod(param: MethodHookParam) {
+ super.beforeHookedMethod(param)
+ if (XSPUtils.getBoolean(
+ "prevent_recovery_of_battery_optimization_white_list",
+ false
+ )
+ ) {
+ param.result = null
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9e46402a..f8567fcc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -80,5 +80,9 @@
第三方开源声明
解除安装限制
支持降级/不同签名/无签名安装
+ 防止恢复电池优化白名单
+ 系统重启后仍会还原
+ 电池优化
+ 快速打开被MIUI隐藏的电池优化功能
\ No newline at end of file