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