From 4c13ad4152e64e9f54bb639e6a98bc6e228bab07 Mon Sep 17 00:00:00 2001 From: QQ little ice <60041789+qqlittleice233@users.noreply.github.com> Date: Sun, 27 Mar 2022 02:07:02 +0800 Subject: [PATCH] Use EasyXposed (#112) * add EasyXposed * change hook entry * [android] use EasyXposed * [com.miui.mediaeditor] use EasyXposed * [com.miui.home] use EasyXposed * [com.miui.powerkeeper] use EasyXposed * [com.miui.screenshot] use EasyXposed * [com.miui.securitycenter] use EasyXposed * [com.android.settings] use EasyXposed * [com.android.thememanager] use EasyXposed * [com.android.systemui] use EasyXposed --- app/proguard-rules.pro | 2 + app/src/main/assets/xposed_init | 2 +- .../lt2333/simplicitytools/hook/MainHook.kt | 46 -------- .../simplicitytools/hook/XposedEntry.kt | 37 ++++++ .../simplicitytools/hook/app/Android.kt | 23 ++-- .../simplicitytools/hook/app/MediaEditor.kt | 17 ++- .../simplicitytools/hook/app/MiuiHome.kt | 20 ++-- .../simplicitytools/hook/app/PowerKeeper.kt | 20 ++-- .../simplicitytools/hook/app/ScreenShot.kt | 16 ++- .../hook/app/SecurityCenter.kt | 28 ++--- .../simplicitytools/hook/app/Settings.kt | 12 +- .../simplicitytools/hook/app/SystemUI.kt | 96 ++++++--------- .../simplicitytools/hook/app/ThemeManager.kt | 17 ++- .../simplicitytools/hook/app/Updater.kt | 8 +- .../app/android/DeleteOnPostNotification.kt | 11 +- .../hook/app/android/DisableFlagSecure.kt | 11 +- .../hook/app/android/MaxWallpaperScale.kt | 10 +- .../android/RemoveSmallWindowRestrictions.kt | 17 ++- .../mediaeditor/UnlockUnlimitedCropping.kt | 13 +- .../hook/app/miuihome/AlwaysDisplayTime.kt | 11 +- .../hook/app/miuihome/DoubleTapToSleep.kt | 13 +- .../hook/app/powerkeeper/LockMaxFps.kt | 11 +- ...tRecoveryOfBatteryOptimizationWhitelist.kt | 11 +- .../app/screenshot/UnlockUnlimitedCropping.kt | 11 +- .../hook/app/securitycenter/LockOneHundred.kt | 12 +- .../securitycenter/RemoveMacroBlacklist.kt | 11 +- .../RemoveOpenAppConfirmationPopup.kt | 9 +- .../securitycenter/ShowBatteryTemperature.kt | 27 +++-- .../app/securitycenter/SkipWaitingTime.kt | 10 +- .../settings/ShowNotificationImportance.kt | 13 +- .../hook/app/systemui/BatteryPercentage.kt | 11 +- .../hook/app/systemui/ControlCenterWeather.kt | 17 +-- .../app/systemui/DoubleLineNetworkSpeed.kt | 32 +++-- .../hook/app/systemui/HideBatteryIcon.kt | 13 +- .../hook/app/systemui/HideHDIcon.kt | 13 +- .../app/systemui/HideMobileActivityIcon.kt | 13 +- .../hook/app/systemui/HideMobileTypeIcon.kt | 20 ++-- .../app/systemui/HideNetworkSpeedSplitter.kt | 11 +- .../hook/app/systemui/HideSimIcon.kt | 11 +- .../hook/app/systemui/HideStatusBarIcon.kt | 12 +- .../HideStatusBarNetworkSpeedSecond.kt | 11 +- .../hook/app/systemui/HideWifiActivityIcon.kt | 13 +- .../hook/app/systemui/LockScreenCurrent.kt | 13 +- .../systemui/LockScreenDoubleTapToSleep.kt | 11 +- .../hook/app/systemui/NotificationWeather.kt | 13 +- .../app/systemui/OldNotificationWeather.kt | 13 +- .../hook/app/systemui/OldQSCustom.kt | 15 +-- .../app/systemui/RemoveLockScreenCamera.kt | 14 +-- .../RemoveTheLeftSideOfTheLockScreen.kt | 11 +- ...moveTheMaximumNumberOfNotificationIcons.kt | 11 +- .../systemui/StatusBarBigMobileTypeIcon.kt | 81 ++++++------- .../app/systemui/StatusBarDoubleTapToSleep.kt | 11 +- .../hook/app/systemui/StatusBarLayout.kt | 111 +++++++++--------- .../StatusBarNetworkSpeedRefreshSpeed.kt | 11 +- .../systemui/StatusBarTimeCustomization.kt | 34 +++--- .../hook/app/systemui/WaveCharge.kt | 9 +- .../hook/app/thememanager/RemoveAds.kt | 11 +- .../util/xposed/EasyXposedInit.kt | 31 +++++ .../util/xposed/base/AppRegister.kt | 30 +++++ .../util/xposed/base/HookRegister.kt | 25 ++++ 60 files changed, 647 insertions(+), 530 deletions(-) delete mode 100644 app/src/main/java/com/lt2333/simplicitytools/hook/MainHook.kt create mode 100644 app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt create mode 100644 app/src/main/java/com/lt2333/simplicitytools/util/xposed/EasyXposedInit.kt create mode 100644 app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/AppRegister.kt create mode 100644 app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/HookRegister.kt diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e20ed21e..eca2cf0d 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -27,6 +27,8 @@ public void *(de.robv.android.xposed.IXposedHookZygoteInit$StartupParam); } +-keep class * extends com.lt2333.simplicitytools.util.xposed.EasyXposedInit + -assumenosideeffects class kotlin.jvm.internal.Intrinsics { public static void check*(...); public static void throw*(...); diff --git a/app/src/main/assets/xposed_init b/app/src/main/assets/xposed_init index 371c818b..1be7ebfb 100644 --- a/app/src/main/assets/xposed_init +++ b/app/src/main/assets/xposed_init @@ -1 +1 @@ -com.lt2333.simplicitytools.hook.MainHook \ No newline at end of file +com.lt2333.simplicitytools.hook.XposedEntry \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/MainHook.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/MainHook.kt deleted file mode 100644 index 78b83a59..00000000 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/MainHook.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.lt2333.simplicitytools.hook - -import com.github.kyuubiran.ezxhelper.init.EzXHelperInit -import com.lt2333.simplicitytools.BuildConfig -import com.lt2333.simplicitytools.hook.app.* -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.IXposedHookZygoteInit -import de.robv.android.xposed.XSharedPreferences -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam - -class MainHook : IXposedHookLoadPackage,IXposedHookZygoteInit { - private var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config") - - override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam) { - EzXHelperInit.initZygote(startupParam) - } - - override fun handleLoadPackage(lpparam: LoadPackageParam) { - if (prefs.getBoolean("main_switch", true)) { - EzXHelperInit.initHandleLoadPackage(lpparam) - EzXHelperInit.setEzClassLoader(lpparam.classLoader) - when (lpparam.packageName) { - //Android - "android" -> Android().handleLoadPackage(lpparam) - //系统界面 - "com.android.systemui" -> SystemUI().handleLoadPackage(lpparam) - //电量与性能 - "com.miui.powerkeeper" -> PowerKeeper().handleLoadPackage(lpparam) - //桌面 - "com.miui.home" -> MiuiHome().handleLoadPackage(lpparam) - //手机管家 - "com.miui.securitycenter" -> SecurityCenter().handleLoadPackage(lpparam) - //相册编辑 - "com.miui.mediaeditor" -> MediaEditor().handleLoadPackage(lpparam) - //系统更新 - "com.android.updater" -> Updater().handleLoadPackage(lpparam) - //设置 - "com.android.settings" -> Settings().handleLoadPackage(lpparam) - //主题壁纸 - "com.android.thememanager" -> ThemeManager().handleLoadPackage(lpparam) - //截屏 - "com.miui.screenshot" -> ScreenShot().handleLoadPackage(lpparam) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt new file mode 100644 index 00000000..8167574d --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt @@ -0,0 +1,37 @@ +package com.lt2333.simplicitytools.hook + +import com.lt2333.simplicitytools.BuildConfig +import com.lt2333.simplicitytools.hook.app.* +import com.lt2333.simplicitytools.util.xposed.EasyXposedInit +import com.lt2333.simplicitytools.util.xposed.base.AppRegister +import de.robv.android.xposed.IXposedHookZygoteInit +import de.robv.android.xposed.XSharedPreferences +import de.robv.android.xposed.callbacks.XC_LoadPackage + +class XposedEntry: EasyXposedInit() { + private var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config") + + override val registeredApp: List = listOf( + Android, // Android + SystemUI, // 系统界面 + PowerKeeper, // 电量与性能 + MiuiHome, // 桌面 + SecurityCenter, // 手机管家 + MediaEditor, // 相册编辑 + Updater, // 系统更新 + Settings, // 设置 + ThemeManager, // 主题壁纸 + ScreenShot, // 截屏 + ) + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { + if (prefs.getBoolean("main_switch", true)) { + super.handleLoadPackage(lpparam) + } + } + + override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam?) { + super.initZygote(startupParam) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt index 6f8bf2a9..1767dba7 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt @@ -5,22 +5,25 @@ import com.lt2333.simplicitytools.hook.app.android.DisableFlagSecure import com.lt2333.simplicitytools.hook.app.android.MaxWallpaperScale import com.lt2333.simplicitytools.hook.app.android.RemoveSmallWindowRestrictions import com.lt2333.simplicitytools.hook.app.android.corepatch.CorePatch -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.callbacks.XC_LoadPackage -class Android : IXposedHookLoadPackage { +object Android: AppRegister() { + override val packageName: String = "android" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) //核心破解 CorePatch().handleLoadPackage(lpparam) - //允许截图 - DisableFlagSecure().handleLoadPackage(lpparam) - //上层显示 - DeleteOnPostNotification().handleLoadPackage(lpparam) - //解除小窗限制 - RemoveSmallWindowRestrictions().handleLoadPackage(lpparam) - //壁纸缩放比例 - MaxWallpaperScale().handleLoadPackage(lpparam) + + autoInitHooks(lpparam, + DisableFlagSecure, //允许截图 + DeleteOnPostNotification, //上层显示 + RemoveSmallWindowRestrictions, //解除小窗限制 + MaxWallpaperScale, //壁纸缩放比例 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt index b01c386f..4f7ce9d2 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt @@ -1,14 +1,19 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.mediaeditor.UnlockUnlimitedCropping -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class MediaEditor : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: LoadPackageParam) { +object MediaEditor: AppRegister() { + override val packageName: String = "com.miui.mediaeditor" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) - //解锁裁切最小值 - UnlockUnlimitedCropping().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + UnlockUnlimitedCropping, //解锁裁切最小值 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt index b70d56a3..a48b4e28 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt @@ -2,16 +2,20 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.miuihome.AlwaysDisplayTime import com.lt2333.simplicitytools.hook.app.miuihome.DoubleTapToSleep -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class MiuiHome : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: LoadPackageParam) { +object MiuiHome: AppRegister() { + override val packageName: String = "com.miui.home" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) - //时钟显示时钟 - AlwaysDisplayTime().handleLoadPackage(lpparam) - //双击锁屏 - DoubleTapToSleep().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + AlwaysDisplayTime, //时钟显示时钟 + DoubleTapToSleep, //双击锁屏 + ) } } \ No newline at end of file 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 ecc16879..e0b029a4 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 @@ -2,18 +2,20 @@ 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 com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class PowerKeeper : IXposedHookLoadPackage { +object PowerKeeper: AppRegister() { + override val packageName: String = "com.miui.powerkeeper" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" - override fun handleLoadPackage(lpparam: LoadPackageParam) { + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) - //锁定最高刷新率 - LockMaxFps().handleLoadPackage(lpparam) - //防止恢复电池优化白名单 - PreventRecoveryOfBatteryOptimizationWhitelist().handleLoadPackage(lpparam) - + autoInitHooks(lpparam, + LockMaxFps, //锁定最高刷新率 + PreventRecoveryOfBatteryOptimizationWhitelist, //防止恢复电池优化白名单 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/ScreenShot.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/ScreenShot.kt index fcf884d6..d9f57aaf 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/ScreenShot.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/ScreenShot.kt @@ -1,15 +1,19 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.screenshot.UnlockUnlimitedCropping -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class ScreenShot : IXposedHookLoadPackage { +object ScreenShot: AppRegister() { + override val packageName: String = "com.miui.screenshot" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" - override fun handleLoadPackage(lpparam: LoadPackageParam) { + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook " + javaClass.simpleName) - //锁定最高刷新率 - UnlockUnlimitedCropping().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + UnlockUnlimitedCropping, //锁定最高刷新率 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt index 33fa7bfa..cacf1125 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt @@ -1,23 +1,23 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.securitycenter.* -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class SecurityCenter : IXposedHookLoadPackage { +object SecurityCenter: AppRegister() { + override val packageName: String = "com.miui.securitycenter" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" - override fun handleLoadPackage(lpparam: LoadPackageParam) { + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook " + javaClass.simpleName) - //跳过 5/10秒等待时间 - SkipWaitingTime().handleLoadPackage(lpparam) - //锁定 100分 - LockOneHundred().handleLoadPackage(lpparam) - //去除自动连招黑名单 - RemoveMacroBlacklist().handleLoadPackage(lpparam) - //显示电池温度 - ShowBatteryTemperature().handleLoadPackage(lpparam) - //去除打开应用弹窗 - RemoveOpenAppConfirmationPopup().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + SkipWaitingTime, //跳过 5/10秒等待时间 + LockOneHundred, //锁定 100分 + RemoveMacroBlacklist, //去除自动连招黑名单 + ShowBatteryTemperature, //显示电池温度 + RemoveOpenAppConfirmationPopup, //去除打开应用弹窗 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Settings.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Settings.kt index dcf20983..23e9ee34 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Settings.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Settings.kt @@ -1,13 +1,19 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.settings.ShowNotificationImportance -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.callbacks.XC_LoadPackage -class Settings: IXposedHookLoadPackage { +object Settings: AppRegister() { + override val packageName: String = "com.android.settings" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) - ShowNotificationImportance().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + ShowNotificationImportance, //显示通知重要程度 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt index f28ef883..0f79a76d 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt @@ -1,67 +1,45 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.systemui.* -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class SystemUI : IXposedHookLoadPackage { +object SystemUI: AppRegister() { + override val packageName: String = "com.android.systemui" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" - override fun handleLoadPackage(lpparam: LoadPackageParam) { + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) - //隐藏状态栏图标 - HideStatusBarIcon().handleLoadPackage(lpparam) - //隐藏电池 - HideBatteryIcon().handleLoadPackage(lpparam) - //隐藏HD图标 - HideHDIcon().handleLoadPackage(lpparam) - //隐藏SIM卡图标 - HideSimIcon().handleLoadPackage(lpparam) - //隐藏移动箭头图标 - HideMobileActivityIcon().handleLoadPackage(lpparam) - //隐藏移动类型图标 - HideMobileTypeIcon().handleLoadPackage(lpparam) - //隐藏状态栏网速/s - HideStatusBarNetworkSpeedSecond().handleLoadPackage(lpparam) - //隐藏WIFI活动箭头图标 - HideWifiActivityIcon().handleLoadPackage(lpparam) - //移除通知图标上限 - RemoveTheMaximumNumberOfNotificationIcons().handleLoadPackage(lpparam) - //状态栏网速秒刷新 - StatusBarNetworkSpeedRefreshSpeed().handleLoadPackage(lpparam) - //状态栏时钟自定义 - StatusBarTimeCustomization().handleLoadPackage(lpparam) - //移除锁屏负一屏功能 - RemoveTheLeftSideOfTheLockScreen().handleLoadPackage(lpparam) - //移除锁屏相机功能 - RemoveLockScreenCamera().handleLoadPackage(lpparam) - //通知面板天气 - NotificationWeather().handleLoadPackage(lpparam) - OldNotificationWeather().handleLoadPackage(lpparam) - //控制中心天气 - ControlCenterWeather().handleLoadPackage(lpparam) - //TODO:状态栏电流 - //StatusBarCurrent().handleLoadPackage(lpparam) - //状态栏布局 - StatusBarLayout().handleLoadPackage(lpparam) - //隐藏时钟与实时网速之间的分隔符 - HideNetworkSpeedSplitter().handleLoadPackage(lpparam) - //Alpha充电动画 - WaveCharge().handleLoadPackage(lpparam) - //锁屏电流 - LockScreenCurrent().handleLoadPackage(lpparam) - //锁屏下双击锁屏 - LockScreenDoubleTapToSleep().handleLoadPackage(lpparam) - //双击状态栏锁屏 - StatusBarDoubleTapToSleep().handleLoadPackage(lpparam) - //旧版快速设置自定义 - OldQSCustom().handleLoadPackage(lpparam) - //双排网速 - DoubleLineNetworkSpeed().handleLoadPackage(lpparam) - //大移动类型 - StatusBarBigMobileTypeIcon().handleLoadPackage(lpparam) - //电量百分比 - BatteryPercentage().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + HideStatusBarIcon, //隐藏状态栏图标 + HideBatteryIcon, //隐藏电池 + HideHDIcon, //隐藏HD图标 + HideSimIcon, //隐藏SIM卡图标 + HideMobileActivityIcon, //隐藏移动箭头图标 + HideMobileTypeIcon, //隐藏移动类型图标 + HideStatusBarNetworkSpeedSecond, //隐藏状态栏网速/s + HideWifiActivityIcon, //隐藏WIFI活动箭头图标 + RemoveTheMaximumNumberOfNotificationIcons, //移除通知图标上限 + StatusBarNetworkSpeedRefreshSpeed, //状态栏网速秒刷新 + StatusBarTimeCustomization, //状态栏时钟自定义 + RemoveTheLeftSideOfTheLockScreen, //移除锁屏负一屏功能 + RemoveLockScreenCamera, //移除锁屏相机功能 + NotificationWeather, //通知面板天气 + OldNotificationWeather, + ControlCenterWeather, //控制中心天气 + //StatusBarCurrent, //TODO:状态栏电流 + StatusBarLayout, //状态栏布局 + HideNetworkSpeedSplitter, //隐藏时钟与实时网速之间的分隔符 + WaveCharge, //Alpha充电动画 + LockScreenCurrent, //锁屏电流 + LockScreenDoubleTapToSleep, //锁屏下双击锁屏 + StatusBarDoubleTapToSleep, //双击状态栏锁屏 + OldQSCustom, //旧版快速设置自定义 + DoubleLineNetworkSpeed, //双排网速 + StatusBarBigMobileTypeIcon, //大移动类型 + BatteryPercentage, //电量百分比 + ) } - -} +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/ThemeManager.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/ThemeManager.kt index 4fae6968..f5234bd9 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/ThemeManager.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/ThemeManager.kt @@ -1,14 +1,19 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.thememanager.RemoveAds -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam +import de.robv.android.xposed.callbacks.XC_LoadPackage -class ThemeManager : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: LoadPackageParam) { +object ThemeManager: AppRegister() { + override val packageName: String = "com.android.thememanager" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) - //移除主题壁纸的广告 - RemoveAds().handleLoadPackage(lpparam) + autoInitHooks(lpparam, + RemoveAds, //移除主题壁纸的广告 + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt index b60cddd0..6256206b 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt @@ -2,11 +2,15 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.AppRegister import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.callbacks.XC_LoadPackage -class Updater : IXposedHookLoadPackage { +object Updater: AppRegister() { + override val packageName: String = "com.android.updater" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { if (XSPUtils.getBoolean("remove_ota_validate", false)) { var letter = 'a' diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt index a72973bb..01cf3091 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt @@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.android import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class DeleteOnPostNotification : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.server.wm.AlertWindowNotification".hookBeforeMethod(lpparam.classLoader, "onPostNotification") { +object DeleteOnPostNotification : HookRegister() { + + override fun init() { + "com.android.server.wm.AlertWindowNotification".hookBeforeMethod(getDefaultClassLoader(), "onPostNotification") { hasEnable("delete_on_post_notification") { it.result = null } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt index 75fdbd8b..7be62163 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt @@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.android import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class DisableFlagSecure : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.server.wm.WindowState".hookBeforeMethod(lpparam.classLoader, "isSecureLocked") { +object DisableFlagSecure : HookRegister() { + + override fun init() { + "com.android.server.wm.WindowState".hookBeforeMethod(getDefaultClassLoader(), "isSecureLocked") { hasEnable("disable_flag_secure") { it.result = false } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/MaxWallpaperScale.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/MaxWallpaperScale.kt index 61f355b4..a21cae4c 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/MaxWallpaperScale.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/MaxWallpaperScale.kt @@ -3,15 +3,15 @@ package com.lt2333.simplicitytools.hook.app.android import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.hookBeforeMethod import com.lt2333.simplicitytools.util.setFloatField -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class MaxWallpaperScale : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object MaxWallpaperScale : HookRegister() { - "com.android.server.wm.WallpaperController".hookBeforeMethod(lpparam.classLoader, "zoomOutToScale", Float::class.java) { + override fun init() { + "com.android.server.wm.WallpaperController".hookBeforeMethod(getDefaultClassLoader(), "zoomOutToScale", Float::class.java) { val value = XSPUtils.getFloat("max_wallpaper_scale", 1.1f) it.thisObject.setFloatField("mMaxWallpaperScale", value) } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/RemoveSmallWindowRestrictions.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/RemoveSmallWindowRestrictions.kt index 4ac75aa0..bad0722d 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/RemoveSmallWindowRestrictions.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/RemoveSmallWindowRestrictions.kt @@ -4,36 +4,35 @@ import android.content.Context import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class RemoveSmallWindowRestrictions : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object RemoveSmallWindowRestrictions : HookRegister() { + override fun init() { // 强制所有活动设为可以调整大小 - "com.android.server.wm.Task".hookBeforeMethod(lpparam.classLoader, "isResizeable") { + "com.android.server.wm.Task".hookBeforeMethod(getDefaultClassLoader(), "isResizeable") { hasEnable("remove_small_window_restrictions") { it.result = true } } - "android.util.MiuiMultiWindowAdapter".hookAfterMethod(lpparam.classLoader, "getFreeformBlackList") { + "android.util.MiuiMultiWindowAdapter".hookAfterMethod(getDefaultClassLoader(), "getFreeformBlackList") { hasEnable("remove_small_window_restrictions") { it.result = (it.result as MutableList<*>).apply { clear() } } } - "android.util.MiuiMultiWindowAdapter".hookAfterMethod(lpparam.classLoader, "getFreeformBlackListFromCloud", Context::class.java) { + "android.util.MiuiMultiWindowAdapter".hookAfterMethod(getDefaultClassLoader(), "getFreeformBlackListFromCloud", Context::class.java) { hasEnable("remove_small_window_restrictions") { it.result = (it.result as MutableList<*>).apply { clear() } } } - "android.util.MiuiMultiWindowUtils".hookAfterMethod(lpparam.classLoader, "supportFreeform") { + "android.util.MiuiMultiWindowUtils".hookAfterMethod(getDefaultClassLoader(), "supportFreeform") { hasEnable("remove_small_window_restrictions") { it.result = true } } - } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt index 3d79497f..97de8966 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt @@ -1,17 +1,17 @@ package com.lt2333.simplicitytools.hook.app.mediaeditor import com.lt2333.simplicitytools.util.XSPUtils -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class UnlockUnlimitedCropping :IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object UnlockUnlimitedCropping : HookRegister() { + + override fun init() { //解锁图库裁切最小值 val classIfExists = XposedHelpers.findClassIfExists( "com.miui.gallery.editor.photo.core.imports.obsoletes.Crop\$ResizeDetector", - lpparam.classLoader + getDefaultClassLoader() ) XposedHelpers.findAndHookMethod( classIfExists, @@ -26,7 +26,7 @@ class UnlockUnlimitedCropping :IXposedHookLoadPackage { //截图无限裁切 val classIfExists2 = XposedHelpers.findClassIfExists( "com.miui.gallery.editor.photo.screen.crop.ScreenCropView\$ResizeDetector", - lpparam.classLoader + getDefaultClassLoader() ) XposedHelpers.findAndHookMethod( @@ -40,4 +40,5 @@ class UnlockUnlimitedCropping :IXposedHookLoadPackage { } }) } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt index 1a2a218e..c881dc50 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt @@ -1,16 +1,16 @@ package com.lt2333.simplicitytools.hook.app.miuihome import com.lt2333.simplicitytools.util.XSPUtils -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class AlwaysDisplayTime : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object AlwaysDisplayTime : HookRegister() { + + override fun init() { val classIfExists = XposedHelpers.findClassIfExists( "com.miui.home.launcher.Workspace", - lpparam.classLoader + getDefaultClassLoader() ) XposedHelpers.findAndHookMethod( classIfExists, @@ -23,4 +23,5 @@ class AlwaysDisplayTime : IXposedHookLoadPackage { } }) } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/DoubleTapToSleep.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/DoubleTapToSleep.kt index 58c27a56..fa05e7b8 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/DoubleTapToSleep.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/DoubleTapToSleep.kt @@ -4,15 +4,15 @@ import android.content.Context import android.content.Intent import android.view.MotionEvent import com.lt2333.simplicitytools.util.* +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import com.yuk.miuihome.module.DoubleTapController -import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class DoubleTapToSleep : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object DoubleTapToSleep : HookRegister() { + + override fun init() { hasEnable("double_tap_to_sleep") { - "com.miui.home.launcher.Workspace".findClass(lpparam.classLoader) + "com.miui.home.launcher.Workspace".findClass(getDefaultClassLoader()) .hookAfterAllConstructors { var mDoubleTapControllerEx = XposedHelpers.getAdditionalInstanceField( @@ -28,7 +28,7 @@ class DoubleTapToSleep : IXposedHookLoadPackage { ) } - "com.miui.home.launcher.Workspace".findClass(lpparam.classLoader).hookBeforeMethod( + "com.miui.home.launcher.Workspace".findClass(getDefaultClassLoader()).hookBeforeMethod( "dispatchTouchEvent", MotionEvent::class.java ) { val mDoubleTapControllerEx = XposedHelpers.getAdditionalInstanceField( @@ -50,4 +50,5 @@ class DoubleTapToSleep : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt index ebb42262..16e63351 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt @@ -1,16 +1,16 @@ package com.lt2333.simplicitytools.hook.app.powerkeeper import com.lt2333.simplicitytools.util.XSPUtils -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class LockMaxFps : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object LockMaxFps : HookRegister() { + + override fun init() { val classIfExists = XposedHelpers.findClassIfExists( "com.miui.powerkeeper.statemachine.DisplayFrameSetting", - lpparam.classLoader + getDefaultClassLoader() ) XposedHelpers.findAndHookMethod( classIfExists, @@ -25,4 +25,5 @@ class LockMaxFps : IXposedHookLoadPackage { } }) } + } \ 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 index 79557571..38398b86 100644 --- 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 @@ -1,16 +1,16 @@ package com.lt2333.simplicitytools.hook.app.powerkeeper import com.lt2333.simplicitytools.util.XSPUtils -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister 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) { +object PreventRecoveryOfBatteryOptimizationWhitelist : HookRegister() { + + override fun init() { val classIfExists = XposedHelpers.findClassIfExists( "com.miui.powerkeeper.statemachine.ForceDozeController", - lpparam.classLoader + getDefaultClassLoader() ) XposedHelpers.findAndHookMethod( classIfExists, @@ -28,4 +28,5 @@ class PreventRecoveryOfBatteryOptimizationWhitelist : IXposedHookLoadPackage { } }) } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/screenshot/UnlockUnlimitedCropping.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/screenshot/UnlockUnlimitedCropping.kt index 12c1717b..c37a1dfc 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/screenshot/UnlockUnlimitedCropping.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/screenshot/UnlockUnlimitedCropping.kt @@ -1,17 +1,17 @@ package com.lt2333.simplicitytools.hook.app.screenshot import com.lt2333.simplicitytools.util.XSPUtils -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class UnlockUnlimitedCropping :IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object UnlockUnlimitedCropping : HookRegister() { + + override fun init() { //截图无限裁切 val classIfExists2 = XposedHelpers.findClassIfExists( "com.miui.gallery.editor.photo.screen.crop.ScreenCropView\$b", - lpparam.classLoader + getDefaultClassLoader() ) XposedHelpers.findAndHookMethod( @@ -25,4 +25,5 @@ class UnlockUnlimitedCropping :IXposedHookLoadPackage { } }) } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/LockOneHundred.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/LockOneHundred.kt index 47fd3fdf..0d99b6d3 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/LockOneHundred.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/LockOneHundred.kt @@ -4,14 +4,13 @@ import android.view.View import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class LockOneHundred : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object LockOneHundred : HookRegister() { + override fun init() { //防止点击重新检测 - val mainContentFrameClass = "com.miui.securityscan.ui.main.MainContentFrame".findClass(lpparam.classLoader) + val mainContentFrameClass = "com.miui.securityscan.ui.main.MainContentFrame".findClass(getDefaultClassLoader()) mainContentFrameClass.hookBeforeMethod("onClick", View::class.java) { if (XSPUtils.getBoolean("lock_one_hundred", false)) { it.result = null @@ -19,11 +18,12 @@ class LockOneHundred : IXposedHookLoadPackage { } //锁定100分 - var scoreManagerClass = "com.miui.securityscan.scanner.ScoreManager".findClass(lpparam.classLoader) + val scoreManagerClass = "com.miui.securityscan.scanner.ScoreManager".findClass(getDefaultClassLoader()) scoreManagerClass.hookBeforeMethod("B") { if (XSPUtils.getBoolean("lock_one_hundred", false)) { it.result = 0 } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveMacroBlacklist.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveMacroBlacklist.kt index 5a8dc8b1..2ddb3e92 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveMacroBlacklist.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveMacroBlacklist.kt @@ -1,18 +1,18 @@ package com.lt2333.simplicitytools.hook.app.securitycenter import com.lt2333.simplicitytools.util.XSPUtils -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class RemoveMacroBlacklist : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object RemoveMacroBlacklist : HookRegister() { + + override fun init() { if (XSPUtils.getBoolean("remove_macro_blacklist", false)) { var letter = 'a' for (i in 0..25) { val classIfExists = XposedHelpers.findClassIfExists( - "com.miui.gamebooster.v.$letter" + "0", lpparam.classLoader + "com.miui.gamebooster.v.$letter" + "0", getDefaultClassLoader() ) ?: continue if (classIfExists.declaredMethods.size in 6..12 && classIfExists.fields.isEmpty() && classIfExists.declaredFields.size >= 2) { XposedHelpers.findAndHookMethod(classIfExists, "c", String::class.java, @@ -27,4 +27,5 @@ class RemoveMacroBlacklist : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveOpenAppConfirmationPopup.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveOpenAppConfirmationPopup.kt index 44d84be2..dc93aee7 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveOpenAppConfirmationPopup.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/RemoveOpenAppConfirmationPopup.kt @@ -4,12 +4,14 @@ import android.widget.TextView import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hookAfterMethod +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.callbacks.XC_LoadPackage -class RemoveOpenAppConfirmationPopup : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - val textViewClass = "android.widget.TextView".findClass(lpparam.classLoader) +object RemoveOpenAppConfirmationPopup : HookRegister() { + + override fun init() { + val textViewClass = "android.widget.TextView".findClass(getDefaultClassLoader()) textViewClass.hookAfterMethod( "setText", CharSequence::class.java @@ -31,4 +33,5 @@ class RemoveOpenAppConfirmationPopup : IXposedHookLoadPackage { } } } + } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt index 9791ce8e..4fc5d258 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt @@ -17,17 +17,23 @@ import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hookAfterMethod import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import java.lang.reflect.Field -class ShowBatteryTemperature: IXposedHookLoadPackage { +object ShowBatteryTemperature: HookRegister() { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + private fun getBatteryTemperature(context: Context): Int { + return context.registerReceiver( + null as BroadcastReceiver?, + IntentFilter("android.intent.action.BATTERY_CHANGED") + )!!.getIntExtra("temperature", 0) / 10 + } + + override fun init() { if (!XSPUtils.getBoolean("battery_life_function", false)) return - val a = "com.miui.powercenter.a\$a".findClass(lpparam.classLoader) - "com.miui.powercenter.a".hookBeforeMethod(lpparam.classLoader, "b", Context::class.java) { - it.result = getBatteryTemperature(it.args[0] as Context).toString() + val a = "com.miui.powercenter.a\$a".findClass(getDefaultClassLoader()) + "com.miui.powercenter.a".hookBeforeMethod(getDefaultClassLoader(), "b", Context::class.java) { + it.result = getBatteryTemperature(it.args[0] as Context).toString() } a.hookAfterMethod("run") { val context = AndroidAppHelper.currentApplication().applicationContext @@ -59,10 +65,5 @@ class ShowBatteryTemperature: IXposedHookLoadPackage { linearLayout.addView(tempView) } } - private fun getBatteryTemperature(context: Context): Int { - return context.registerReceiver( - null as BroadcastReceiver?, - IntentFilter("android.intent.action.BATTERY_CHANGED") - )!!.getIntExtra("temperature", 0) / 10 - } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt index ad27e862..d931b42b 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt @@ -4,13 +4,12 @@ import android.widget.TextView import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class SkipWaitingTime : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object SkipWaitingTime : HookRegister() { - val textViewClass = "android.widget.TextView".findClass(lpparam.classLoader) + override fun init() { + val textViewClass = "android.widget.TextView".findClass(getDefaultClassLoader()) textViewClass.hookBeforeMethod( "setText", CharSequence::class.java, @@ -35,4 +34,5 @@ class SkipWaitingTime : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/settings/ShowNotificationImportance.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/settings/ShowNotificationImportance.kt index cac0bab7..02d96a21 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/settings/ShowNotificationImportance.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/settings/ShowNotificationImportance.kt @@ -2,13 +2,13 @@ package com.lt2333.simplicitytools.hook.app.settings import android.app.NotificationChannel import com.lt2333.simplicitytools.util.* -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class ShowNotificationImportance : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - val channelNotificationSettingsClass = "com.android.settings.notification.ChannelNotificationSettings".findClass(lpparam.classLoader) +object ShowNotificationImportance : HookRegister() { + + override fun init() { + val channelNotificationSettingsClass = "com.android.settings.notification.ChannelNotificationSettings".findClass(getDefaultClassLoader()) channelNotificationSettingsClass.hookBeforeMethod("removeDefaultPrefs") { if (!XSPUtils.getBoolean("show_notification_importance", false)) return@hookBeforeMethod val importance = it.thisObject.callMethod("findPreference", "importance") ?: return@hookBeforeMethod @@ -20,7 +20,7 @@ class ShowNotificationImportance : IXposedHookLoadPackage { it.result = null } - val dropDownPreferenceClass = XposedHelpers.findClass("androidx.preference.Preference", lpparam.classLoader) + val dropDownPreferenceClass = XposedHelpers.findClass("androidx.preference.Preference", getDefaultClassLoader()) dropDownPreferenceClass.hookAfterMethod("callChangeListener", Any::class.java) { val channelNotificationSettings = XposedHelpers.getAdditionalInstanceField(it.thisObject, "channelNotificationSettings") ?: return@hookAfterMethod val mChannel = channelNotificationSettings.getObjectField("mChannel") as NotificationChannel @@ -31,4 +31,5 @@ class ShowNotificationImportance : IXposedHookLoadPackage { mBackend.callMethod("updateChannel", mPkg, mUid, mChannel) } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/BatteryPercentage.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/BatteryPercentage.kt index b4da195f..0c6ec2e3 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/BatteryPercentage.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/BatteryPercentage.kt @@ -5,15 +5,15 @@ import android.widget.TextView import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class BatteryPercentage : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object BatteryPercentage: HookRegister() { + + override fun init() { val size = XSPUtils.getFloat("battery_percentage_font_size", 0f) if (size == 0f) return "com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateResources" ) { (it.thisObject.getObjectField("mBatteryPercentView") as TextView).setTextSize( @@ -21,4 +21,5 @@ class BatteryPercentage : IXposedHookLoadPackage { ) } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/ControlCenterWeather.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/ControlCenterWeather.kt index 1626281e..4b234b97 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/ControlCenterWeather.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/ControlCenterWeather.kt @@ -11,17 +11,17 @@ import androidx.constraintlayout.widget.ConstraintLayout import cn.fkj233.ui.activity.dp2px import com.github.kyuubiran.ezxhelper.utils.loadClass import com.lt2333.simplicitytools.util.* +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import com.lt2333.simplicitytools.view.WeatherView -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage -class ControlCenterWeather : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object ControlCenterWeather: HookRegister() { + + override fun init() { hasEnable("") { var mWeatherView: TextView? = null val isDisplayCity = XSPUtils.getBoolean("", false) "com.android.systemui.controlcenter.phone.widget.QSControlCenterHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "onFinishInflate" ) { val viewGroup = it.thisObject as ViewGroup @@ -78,7 +78,7 @@ class ControlCenterWeather : IXposedHookLoadPackage { } //解决横屏重叠 "com.android.systemui.controlcenter.phone.widget.QSControlCenterHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateLayout" ) { val mOrientation = it.thisObject.getObjectField("mOrientation") as Int @@ -94,7 +94,7 @@ class ControlCenterWeather : IXposedHookLoadPackage { var mConstraintLayout: ConstraintLayout? = null val isDisplayCity = XSPUtils.getBoolean("control_center_weather_city", false) "com.android.systemui.controlcenter.phone.widget.QSControlCenterHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "onFinishInflate" ) { val viewGroup = it.thisObject as ViewGroup @@ -257,7 +257,7 @@ class ControlCenterWeather : IXposedHookLoadPackage { } //解决横屏重叠 "com.android.systemui.controlcenter.phone.widget.QSControlCenterHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateLayout" ) { val viewGroup = it.thisObject as ViewGroup @@ -292,4 +292,5 @@ class ControlCenterWeather : IXposedHookLoadPackage { } } } + } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/DoubleLineNetworkSpeed.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/DoubleLineNetworkSpeed.kt index 028c106d..a715165d 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/DoubleLineNetworkSpeed.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/DoubleLineNetworkSpeed.kt @@ -9,11 +9,10 @@ import android.widget.TextView import com.github.kyuubiran.ezxhelper.init.InitFields import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.util.* -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import java.text.DecimalFormat -class DoubleLineNetworkSpeed : IXposedHookLoadPackage { +object DoubleLineNetworkSpeed: HookRegister() { private var mLastTotalUp: Long = 0 private var mLastTotalDown: Long = 0 @@ -27,7 +26,7 @@ class DoubleLineNetworkSpeed : IXposedHookLoadPackage { private val getDualSize = XSPUtils.getInt("status_bar_network_speed_dual_row_size", 0) private val getDualAlign = XSPUtils.getInt("status_bar_network_speed_dual_row_gravity", 0) - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + override fun init() { val none = InitFields.moduleRes.getString(R.string.none) @@ -39,7 +38,7 @@ class DoubleLineNetworkSpeed : IXposedHookLoadPackage { } hasEnable("status_bar_dual_row_network_speed") { - "com.android.systemui.statusbar.views.NetworkSpeedView".findClass(lpparam.classLoader) + "com.android.systemui.statusbar.views.NetworkSpeedView".findClass(getDefaultClassLoader()) .hookAfterConstructor(Context::class.java, AttributeSet::class.java) { val mView = it.thisObject as TextView mView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 7f) @@ -56,24 +55,24 @@ class DoubleLineNetworkSpeed : IXposedHookLoadPackage { } "com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod( - lpparam.classLoader, + getDefaultClassLoader(), "formatSpeed", Context::class.java, Long::class.java ) { if (getDualAlign == 0) { it.result = - "${upIcon} ${getTotalUpSpeed(it.args[0]as Context)}\n${downIcon} ${getTotalDownloadSpeed(it.args[0]as Context)}" + "$upIcon ${getTotalUpSpeed(it.args[0]as Context)}\n${downIcon} ${getTotalDownloadSpeed(it.args[0]as Context)}" } else { it.result = - "${getTotalUpSpeed(it.args[0]as Context)} ${upIcon}\n${getTotalDownloadSpeed(it.args[0]as Context)} ${downIcon}" + "${getTotalUpSpeed(it.args[0]as Context)} ${upIcon}\n${getTotalDownloadSpeed(it.args[0]as Context)} $downIcon" } } } } //获取总的上行速度 - fun getTotalUpSpeed(context: Context): String { + private fun getTotalUpSpeed(context: Context): String { var totalUpSpeed = 0F val currentTotalTxBytes = TrafficStats.getTotalTxBytes() @@ -98,15 +97,15 @@ class DoubleLineNetworkSpeed : IXposedHookLoadPackage { mLastTotalUp = currentTotalTxBytes lastTimeStampTotalUp = nowTimeStampTotalUp - if (totalUpSpeed >= 100) { - return "" + totalUpSpeed.toInt() + unit + return if (totalUpSpeed >= 100) { + "" + totalUpSpeed.toInt() + unit } else { - return "" + totalUpSpeed + unit + "" + totalUpSpeed + unit } } //获取总的下行速度 - fun getTotalDownloadSpeed(context: Context): String { + private fun getTotalDownloadSpeed(context: Context): String { var totalDownSpeed = 0F val currentTotalRxBytes = TrafficStats.getTotalRxBytes() val nowTimeStampTotalDown = System.currentTimeMillis() @@ -130,13 +129,12 @@ class DoubleLineNetworkSpeed : IXposedHookLoadPackage { mLastTotalDown = currentTotalRxBytes lastTimeStampTotalDown = nowTimeStampTotalDown - if (totalDownSpeed >= 100) { - return "" + totalDownSpeed.toInt() + unit + return if (totalDownSpeed >= 100) { + "" + totalDownSpeed.toInt() + unit } else { - return "" + totalDownSpeed + unit + "" + totalDownSpeed + unit } } - } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt index 3a66f813..237bb75a 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt @@ -7,12 +7,12 @@ import android.widget.TextView import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideBatteryIcon : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(lpparam.classLoader, "updateResources") { +object HideBatteryIcon : HookRegister() { + + override fun init() { + "com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(getDefaultClassLoader(), "updateResources") { //隐藏电池图标 hasEnable("hide_battery_icon") { @@ -32,7 +32,7 @@ class HideBatteryIcon : IXposedHookLoadPackage { (it.thisObject.getObjectField("mBatteryPercentMarkView") as TextView).textSize = 0F } - "com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(lpparam.classLoader, "updateChargeAndText") { + "com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(getDefaultClassLoader(), "updateChargeAndText") { //隐藏电池充电图标 hasEnable("hide_battery_charging_icon") { (it.thisObject.getObjectField("mBatteryChargingInView") as ImageView).visibility = View.GONE @@ -41,4 +41,5 @@ class HideBatteryIcon : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt index 73b6101f..363fde08 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt @@ -5,13 +5,13 @@ import android.widget.ImageView import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideHDIcon :IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object HideHDIcon: HookRegister() { + + override fun init() { val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState" - "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) { + "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "initViewState", iconState) { hasEnable("hide_big_hd_icon") { (it.thisObject.getObjectField("mVolte") as ImageView).visibility = View.GONE } @@ -23,7 +23,7 @@ class HideHDIcon :IXposedHookLoadPackage { } } - "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) { + "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "updateState", iconState) { hasEnable("hide_big_hd_icon") { (it.thisObject.getObjectField("mVolte") as ImageView).visibility = View.GONE } @@ -35,4 +35,5 @@ class HideHDIcon :IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileActivityIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileActivityIcon.kt index e4bd96f2..e94c45da 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileActivityIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileActivityIcon.kt @@ -5,24 +5,25 @@ import android.widget.ImageView import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideMobileActivityIcon : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object HideMobileActivityIcon: HookRegister() { + + override fun init() { val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState" - "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) { + "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "initViewState", iconState) { hasEnable("hide_mobile_activity_icon") { (it.thisObject.getObjectField("mLeftInOut") as ImageView).visibility = View.GONE (it.thisObject.getObjectField("mRightInOut") as ImageView).visibility = View.GONE } } - "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) { + "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "updateState", iconState) { hasEnable("hide_mobile_activity_icon") { (it.thisObject.getObjectField("mLeftInOut") as ImageView).visibility = View.GONE (it.thisObject.getObjectField("mRightInOut") as ImageView).visibility = View.GONE } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileTypeIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileTypeIcon.kt index 6ecf2213..1fc5b11a 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileTypeIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideMobileTypeIcon.kt @@ -7,17 +7,17 @@ import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage -class HideMobileTypeIcon : IXposedHookLoadPackage { - val isBigType=XSPUtils.getBoolean("big_mobile_type_icon", false) - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - val iconState = - "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState" +object HideMobileTypeIcon: HookRegister() { + + private val isBigType = XSPUtils.getBoolean("big_mobile_type_icon", false) + + override fun init() { + val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState" "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "initViewState", iconState ) { @@ -25,7 +25,7 @@ class HideMobileTypeIcon : IXposedHookLoadPackage { } "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateState", iconState ) { @@ -33,7 +33,7 @@ class HideMobileTypeIcon : IXposedHookLoadPackage { } } - fun hideMobileTypeIcon(it: XC_MethodHook.MethodHookParam) { + private fun hideMobileTypeIcon(it: XC_MethodHook.MethodHookParam) { hasEnable("hide_mobile_type_icon") { if (isBigType) { (it.thisObject.getObjectField("mMobileType") as TextView).visibility = diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNetworkSpeedSplitter.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNetworkSpeedSplitter.kt index 299cff3b..574285dc 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNetworkSpeedSplitter.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNetworkSpeedSplitter.kt @@ -4,12 +4,12 @@ import android.widget.TextView import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideNetworkSpeedSplitter : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - val networkSpeedSplitterClass = "com.android.systemui.statusbar.views.NetworkSpeedSplitter".findClass(lpparam.classLoader) +object HideNetworkSpeedSplitter: HookRegister() { + + override fun init() { + val networkSpeedSplitterClass = "com.android.systemui.statusbar.views.NetworkSpeedSplitter".findClass(getDefaultClassLoader()) networkSpeedSplitterClass.hookAfterMethod("init") { if (XSPUtils.getBoolean("hide_network_speed_splitter", false)) { val textView = it.thisObject as TextView @@ -17,4 +17,5 @@ class HideNetworkSpeedSplitter : IXposedHookLoadPackage { } } } + } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt index f7232b1f..a1094e53 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt @@ -2,12 +2,12 @@ package com.lt2333.simplicitytools.hook.app.systemui import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideSimIcon :IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.systemui.statusbar.phone.StatusBarSignalPolicy".hookBeforeMethod(lpparam.classLoader, "hasCorrectSubs", MutableList::class.java) { +object HideSimIcon: HookRegister() { + + override fun init() { + "com.android.systemui.statusbar.phone.StatusBarSignalPolicy".hookBeforeMethod(getDefaultClassLoader(), "hasCorrectSubs", MutableList::class.java) { val list = it.args[0] as MutableList<*> val size = list.size hasEnable("hide_sim_two_icon", extraCondition = { size == 2 }) { @@ -18,4 +18,5 @@ class HideSimIcon :IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarIcon.kt index 5398e0cf..c5310597 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarIcon.kt @@ -2,27 +2,25 @@ package com.lt2333.simplicitytools.hook.app.systemui import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.callbacks.XC_LoadPackage -class HideStatusBarIcon : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object HideStatusBarIcon: HookRegister() { + override fun init() { "com.android.systemui.statusbar.phone.StatusBarIconControllerImpl".hookBeforeMethod( - lpparam.classLoader, + getDefaultClassLoader(), "setIconVisibility", String::class.java, Boolean::class.java ) { hideIcon(it) } "com.android.systemui.statusbar.phone.MiuiDripLeftStatusBarIconControllerImpl".hookBeforeMethod( - lpparam.classLoader, + getDefaultClassLoader(), "setIconVisibility", String::class.java, Boolean::class.java ) { hideIcon(it) } - } private fun hideIcon(it: XC_MethodHook.MethodHookParam) { diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt index 930beb00..0d82ba24 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt @@ -3,12 +3,12 @@ package com.lt2333.simplicitytools.hook.app.systemui import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod import com.lt2333.simplicitytools.util.isNonNull -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideStatusBarNetworkSpeedSecond :IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.systemui.statusbar.views.NetworkSpeedView".hookBeforeMethod(lpparam.classLoader, "setNetworkSpeed", String::class.java) { +object HideStatusBarNetworkSpeedSecond: HookRegister() { + + override fun init() { + "com.android.systemui.statusbar.views.NetworkSpeedView".hookBeforeMethod(getDefaultClassLoader(), "setNetworkSpeed", String::class.java) { hasEnable("hide_status_bar_network_speed_second") { it.args[0].isNonNull { s -> it.args[0] = (s as String) @@ -19,4 +19,5 @@ class HideStatusBarNetworkSpeedSecond :IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiActivityIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiActivityIcon.kt index 8e759c18..fa7809df 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiActivityIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiActivityIcon.kt @@ -6,13 +6,13 @@ import android.widget.TextView import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class HideWifiActivityIcon : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object HideWifiActivityIcon: HookRegister() { + + override fun init() { val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState" - "com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) { + "com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(getDefaultClassLoader(), "initViewState", iconState) { //隐藏WIFI箭头 hasEnable("hide_wifi_activity_icon") { (it.thisObject.getObjectField("mWifiActivityView") as ImageView).visibility = View.INVISIBLE @@ -23,7 +23,7 @@ class HideWifiActivityIcon : IXposedHookLoadPackage { } } - "com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) { + "com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(getDefaultClassLoader(), "updateState", iconState) { //隐藏WIFI箭头 hasEnable("hide_wifi_activity_icon") { (it.thisObject.getObjectField("mWifiActivityView") as ImageView).visibility = View.INVISIBLE @@ -34,4 +34,5 @@ class HideWifiActivityIcon : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt index 013cad47..4c8c3fd6 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt @@ -8,18 +8,18 @@ import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage import java.io.BufferedReader import java.io.FileReader import java.lang.reflect.Method import kotlin.math.roundToInt -class LockScreenCurrent : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object LockScreenCurrent : HookRegister() { + + override fun init() { hasEnable("lock_screen_charging_current") { - "com.android.keyguard.charge.ChargeUtils".findClass(lpparam.classLoader) + "com.android.keyguard.charge.ChargeUtils".findClass(getDefaultClassLoader()) .hookAfterMethod( "getChargingHintText", Context::class.java, @@ -28,7 +28,7 @@ class LockScreenCurrent : IXposedHookLoadPackage { ) { it.result = getCurrent() + "\n" + it.result } - "com.android.systemui.statusbar.phone.KeyguardBottomAreaView".findClass(lpparam.classLoader) + "com.android.systemui.statusbar.phone.KeyguardBottomAreaView".findClass(getDefaultClassLoader()) .hookAfterMethod( "onFinishInflate" ) { @@ -105,4 +105,5 @@ class LockScreenCurrent : IXposedHookLoadPackage { } return defaultValue } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenDoubleTapToSleep.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenDoubleTapToSleep.kt index 163d6337..2aca8e82 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenDoubleTapToSleep.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenDoubleTapToSleep.kt @@ -10,16 +10,16 @@ import android.view.View.OnTouchListener import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class LockScreenDoubleTapToSleep : IXposedHookLoadPackage { +object LockScreenDoubleTapToSleep: HookRegister() { + @SuppressLint("ClickableViewAccessibility") - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + override fun init() { hasEnable("lock_screen_double_tap_to_sleep") { "com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer".findClass( - lpparam.classLoader + getDefaultClassLoader() ).hookBeforeMethod("onFinishInflate") { val view = it.thisObject as View XposedHelpers.setAdditionalInstanceField(view, "currentTouchTime", 0L) @@ -68,4 +68,5 @@ class LockScreenDoubleTapToSleep : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/NotificationWeather.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/NotificationWeather.kt index 29dffb52..efd4f67c 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/NotificationWeather.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/NotificationWeather.kt @@ -11,20 +11,18 @@ import androidx.constraintlayout.widget.ConstraintLayout import cn.fkj233.ui.activity.dp2px import com.github.kyuubiran.ezxhelper.utils.loadClass import com.lt2333.simplicitytools.util.* +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import com.lt2333.simplicitytools.view.WeatherView -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage -class NotificationWeather : IXposedHookLoadPackage { +object NotificationWeather: HookRegister() { - - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + override fun init() { hasEnable("notification_weather") { var mWeatherView: TextView? = null var mConstraintLayout: ConstraintLayout? = null val isDisplayCity = XSPUtils.getBoolean("notification_weather_city", false) "com.android.systemui.qs.MiuiNotificationHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "onFinishInflate" ) { val viewGroup = it.thisObject as ViewGroup @@ -187,7 +185,7 @@ class NotificationWeather : IXposedHookLoadPackage { } //解决横屏重叠 "com.android.systemui.qs.MiuiNotificationHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateLayout" ) { val viewGroup = it.thisObject as ViewGroup @@ -222,4 +220,5 @@ class NotificationWeather : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldNotificationWeather.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldNotificationWeather.kt index cfcd7259..86112dc2 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldNotificationWeather.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldNotificationWeather.kt @@ -8,17 +8,17 @@ import android.widget.TextView import android.widget.Toast import com.github.kyuubiran.ezxhelper.utils.loadClass import com.lt2333.simplicitytools.util.* +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import com.lt2333.simplicitytools.view.WeatherView -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage -class OldNotificationWeather : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object OldNotificationWeather: HookRegister() { + + override fun init() { hasEnable("notification_weather") { var mWeatherView: TextView? = null val isDisplayCity = XSPUtils.getBoolean("notification_weather_city", false) "com.android.systemui.qs.MiuiQSHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "onFinishInflate" ) { val viewGroup = it.thisObject as ViewGroup @@ -84,7 +84,7 @@ class OldNotificationWeather : IXposedHookLoadPackage { } //解决横屏重叠 "com.android.systemui.qs.MiuiQSHeaderView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateLayout" ) { val mOritation = it.thisObject.getObjectField("mOrientation") as Int @@ -96,5 +96,6 @@ class OldNotificationWeather : IXposedHookLoadPackage { } } } + } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldQSCustom.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldQSCustom.kt index 7b5e1f24..8bfda0a7 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldQSCustom.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/OldQSCustom.kt @@ -6,12 +6,12 @@ import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class OldQSCustom : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object OldQSCustom: HookRegister() { + + override fun init() { hasEnable("old_qs_custom_switch") { val mRows = XSPUtils.getInt("qs_custom_rows", 3) val mRowsHorizontal = XSPUtils.getInt("qs_custom_rows_horizontal", 2) @@ -19,7 +19,7 @@ class OldQSCustom : IXposedHookLoadPackage { val mColumnsUnexpanded = XSPUtils.getInt("qs_custom_columns_unexpanded", 5) "com.android.systemui.qs.MiuiQuickQSPanel".hookBeforeMethod( - lpparam.classLoader, + getDefaultClassLoader(), "setMaxTiles", Int::class.java ) { //未展开时的列数 @@ -27,14 +27,14 @@ class OldQSCustom : IXposedHookLoadPackage { } "com.android.systemui.qs.MiuiTileLayout".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateColumns" ) { //展开时的列数 XposedHelpers.setObjectField(it.thisObject, "mColumns", mColumns) } "com.android.systemui.qs.MiuiTileLayout".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateResources" ) { //展开时的行数 @@ -49,4 +49,5 @@ class OldQSCustom : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveLockScreenCamera.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveLockScreenCamera.kt index 8416d89e..542234a7 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveLockScreenCamera.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveLockScreenCamera.kt @@ -6,30 +6,30 @@ import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class RemoveLockScreenCamera : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object RemoveLockScreenCamera: HookRegister() { + override fun init() { //屏蔽右下角组件显示 - "com.android.systemui.statusbar.phone.KeyguardBottomAreaView".hookAfterMethod(lpparam.classLoader, "onFinishInflate") { + "com.android.systemui.statusbar.phone.KeyguardBottomAreaView".hookAfterMethod(getDefaultClassLoader(), "onFinishInflate") { hasEnable("remove_lock_screen_camera") { (it.thisObject.getObjectField("mRightAffordanceViewLayout") as LinearLayout).visibility = View.GONE } } //屏蔽滑动撞墙动画 - "com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(lpparam.classLoader, "onTouchMove", Float::class.java, Float::class.java) { + "com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(getDefaultClassLoader(), "onTouchMove", Float::class.java, Float::class.java) { hasEnable("remove_lock_screen_camera") { it.result = false } } - "com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(lpparam.classLoader, "reset") { + "com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(getDefaultClassLoader(), "reset") { hasEnable("remove_lock_screen_camera") { it.result = null } } } + } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheLeftSideOfTheLockScreen.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheLeftSideOfTheLockScreen.kt index 986e1cf7..6b55502e 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheLeftSideOfTheLockScreen.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheLeftSideOfTheLockScreen.kt @@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.systemui import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class RemoveTheLeftSideOfTheLockScreen : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer".hookBeforeMethod(lpparam.classLoader, "inflateLeftView") { +object RemoveTheLeftSideOfTheLockScreen: HookRegister() { + + override fun init() { + "com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer".hookBeforeMethod(getDefaultClassLoader(), "inflateLeftView") { hasEnable("remove_the_left_side_of_the_lock_screen") { it.result = null } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt index 33b2b39a..c6a38ee0 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt @@ -4,13 +4,13 @@ import com.lt2333.simplicitytools.util.callMethod import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.replaceMethod import com.lt2333.simplicitytools.util.setIntField -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class RemoveTheMaximumNumberOfNotificationIcons : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { +object RemoveTheMaximumNumberOfNotificationIcons: HookRegister() { + + override fun init() { hasEnable("remove_the_maximum_number_of_notification_icons") { - "com.android.systemui.statusbar.phone.NotificationIconContainer".replaceMethod(lpparam.classLoader, "miuiShowNotificationIcons", Boolean::class.java) { + "com.android.systemui.statusbar.phone.NotificationIconContainer".replaceMethod(getDefaultClassLoader(), "miuiShowNotificationIcons", Boolean::class.java) { if (it.args[0] as Boolean) { it.thisObject.setIntField("MAX_DOTS", 30) it.thisObject.setIntField("MAX_STATIC_ICONS", 30) @@ -24,4 +24,5 @@ class RemoveTheMaximumNumberOfNotificationIcons : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarBigMobileTypeIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarBigMobileTypeIcon.kt index 08d78eff..08b4ab67 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarBigMobileTypeIcon.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarBigMobileTypeIcon.kt @@ -13,57 +13,57 @@ import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookAfterMethod import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage { - val upAndDownPosition = XSPUtils.getInt("big_mobile_type_icon_up_and_down_position", 0) - val leftAndRightMargin = XSPUtils.getInt("big_mobile_type_icon_left_and_right_margins", 0) - val isBold = XSPUtils.getBoolean("big_mobile_type_icon_bold", true) - val size = XSPUtils.getFloat("big_mobile_type_icon_size", 12.5f) +object StatusBarBigMobileTypeIcon: HookRegister() { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + private val upAndDownPosition = XSPUtils.getInt("big_mobile_type_icon_up_and_down_position", 0) + private val leftAndRightMargin = XSPUtils.getInt("big_mobile_type_icon_left_and_right_margins", 0) + private val isBold = XSPUtils.getBoolean("big_mobile_type_icon_bold", true) + private val size = XSPUtils.getFloat("big_mobile_type_icon_size", 12.5f) + + override fun init() { hasEnable("big_mobile_type_icon") { "com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod( - lpparam.classLoader, + getDefaultClassLoader(), "init" ) { - val StatusBarMobileView = it.thisObject as ViewGroup - val context: Context = StatusBarMobileView.context + val statusBarMobileView = it.thisObject as ViewGroup + val context: Context = statusBarMobileView.context val res: Resources = context.resources //获取组件 - val mobile_container_left_ID: Int = + val mobileContainerLeftId: Int = res.getIdentifier("mobile_container_left", "id", "com.android.systemui") - val mobile_container_left = - StatusBarMobileView.findViewById(mobile_container_left_ID) + val mobileContainerLeft = + statusBarMobileView.findViewById(mobileContainerLeftId) - val mobile_type_ID: Int = + val mobileTypeId: Int = res.getIdentifier("mobile_type", "id", "com.android.systemui") - val mobile_type = StatusBarMobileView.findViewById(mobile_type_ID) + val mobileType = statusBarMobileView.findViewById(mobileTypeId) - val mobile_left_mobile_inout_ID: Int = res.getIdentifier( + val mobileLeftMobileInoutId: Int = res.getIdentifier( "mobile_left_mobile_inout", "id", "com.android.systemui" ) - val mobile_left_mobile_inout = - StatusBarMobileView.findViewById(mobile_left_mobile_inout_ID) + val mobileLeftMobileInout = + statusBarMobileView.findViewById(mobileLeftMobileInoutId) //获取插入位置 - val mobile_container_right_ID: Int = res.getIdentifier( + val mobileContainerRightId: Int = res.getIdentifier( "mobile_container_right", "id", "com.android.systemui" ) - val mobile_container_right = - StatusBarMobileView.findViewById(mobile_container_right_ID) - val RightParentLayout = mobile_container_right.parent as ViewGroup - val mobile_container_right_Index = - RightParentLayout.indexOfChild(mobile_container_right) + val mobileContainerRight = + statusBarMobileView.findViewById(mobileContainerRightId) + val rightParentLayout = mobileContainerRight.parent as ViewGroup + val mobileContainerRightIndex = + rightParentLayout.indexOfChild(mobileContainerRight) //创建新布局 val newLinearLayoutLP = LinearLayout.LayoutParams( @@ -74,50 +74,50 @@ class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage { } val newLinearlayout = LinearLayout(context).also { it.layoutParams = newLinearLayoutLP - it.id = mobile_container_left_ID + it.id = mobileContainerLeftId it.setPadding(leftAndRightMargin, 0, leftAndRightMargin, 0) } XposedHelpers.setObjectField(it.thisObject, "mMobileLeftContainer", newLinearlayout) - RightParentLayout.addView( + rightParentLayout.addView( newLinearlayout, - mobile_container_right_Index + mobileContainerRightIndex ) //将组件插入新的布局 - (mobile_type.parent as ViewGroup).removeView(mobile_type) - (mobile_left_mobile_inout.parent as ViewGroup).removeView(mobile_left_mobile_inout) - (mobile_container_left.parent as ViewGroup).removeView(mobile_container_left) + (mobileType.parent as ViewGroup).removeView(mobileType) + (mobileLeftMobileInout.parent as ViewGroup).removeView(mobileLeftMobileInout) + (mobileContainerLeft.parent as ViewGroup).removeView(mobileContainerLeft) - newLinearlayout.addView(mobile_type) //类型 - val mobile_type_lp = LinearLayout.LayoutParams( + newLinearlayout.addView(mobileType) //类型 + val mobileTypeLp = LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ).also { it.gravity = Gravity.CENTER_VERTICAL it.topMargin = upAndDownPosition } - mobile_type.also { + mobileType.also { it.setTextSize(TypedValue.COMPLEX_UNIT_DIP, size) if (isBold) { it.typeface = Typeface.DEFAULT_BOLD } - it.layoutParams = mobile_type_lp + it.layoutParams = mobileTypeLp } - newLinearlayout.addView(mobile_left_mobile_inout) //箭头 - val mobile_left_mobile_inout_lp = LinearLayout.LayoutParams( + newLinearlayout.addView(mobileLeftMobileInout) //箭头 + val mobileLeftMobileInoutLp = LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT ) - mobile_left_mobile_inout.also { - it.layoutParams = mobile_left_mobile_inout_lp + mobileLeftMobileInout.also { + it.layoutParams = mobileLeftMobileInoutLp } //屏蔽更新布局 "com.android.systemui.statusbar.StatusBarMobileView".hookBeforeMethod( - lpparam.classLoader, + getDefaultClassLoader(), "updateMobileTypeLayout", String::class.java ) { it.result = null @@ -125,4 +125,5 @@ class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarDoubleTapToSleep.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarDoubleTapToSleep.kt index 8ea39374..ae368bc1 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarDoubleTapToSleep.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarDoubleTapToSleep.kt @@ -9,16 +9,16 @@ import android.view.ViewGroup import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class StatusBarDoubleTapToSleep : IXposedHookLoadPackage { +object StatusBarDoubleTapToSleep: HookRegister() { + @SuppressLint("ClickableViewAccessibility") - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + override fun init() { hasEnable("status_bar_double_tap_to_sleep") { "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView".findClass( - lpparam.classLoader + getDefaultClassLoader() ).hookBeforeMethod( "onFinishInflate" ) { @@ -65,4 +65,5 @@ class StatusBarDoubleTapToSleep : IXposedHookLoadPackage { } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarLayout.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarLayout.kt index c5915b17..1b606665 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarLayout.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarLayout.kt @@ -1,5 +1,6 @@ package com.lt2333.simplicitytools.hook.app.systemui +import android.annotation.SuppressLint import android.content.Context import android.content.res.Configuration import android.content.res.Resources @@ -14,26 +15,26 @@ import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.getObjectField import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class StatusBarLayout : IXposedHookLoadPackage { +@SuppressLint("StaticFieldLeak") +object StatusBarLayout: HookRegister() { private var mLeftLayout: LinearLayout? = null private var mRightLayout: LinearLayout? = null private var mCenterLayout: LinearLayout? = null - private var status_bar: ViewGroup? = null + private var statusBar: ViewGroup? = null - private var status_bar_left = 0 - private var status_bar_top = 0 - private var status_bar_right = 0 - private var status_bar_bottom = 0 + private var statusBarLeft = 0 + private var statusBarTop = 0 + private var statusBarRight = 0 + private var statusBarBottom = 0 - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + override fun init() { if (!XSPUtils.getBoolean("status_bar_time_center", false)) return val collapsedStatusBarFragmentClass = - "com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(lpparam.classLoader) + "com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(getDefaultClassLoader()) collapsedStatusBarFragmentClass.hookAfterMethod( "onViewCreated", @@ -44,36 +45,36 @@ class StatusBarLayout : IXposedHookLoadPackage { param.thisObject.getObjectField("mStatusBar") as ViewGroup val context: Context = MiuiPhoneStatusBarView.context val res: Resources = MiuiPhoneStatusBarView.resources - val status_bar_ID: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") - val status_bar_contents_ID: Int = + val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") + val statusBarContentsId: Int = res.getIdentifier("status_bar_contents", "id", "com.android.systemui") - val system_icon_area_ID: Int = + val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui") - val clock_ID: Int = res.getIdentifier("clock", "id", "com.android.systemui") - val phone_status_bar_left_container_ID: Int = + val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") + val phoneStatusBarLeftContainerId: Int = res.getIdentifier("phone_status_bar_left_container", "id", "com.android.systemui") - val fullscreen_notification_icon_area_ID: Int = + val fullscreenNotificationIconAreaId: Int = res.getIdentifier("fullscreen_notification_icon_area", "id", "com.android.systemui") - status_bar = MiuiPhoneStatusBarView.findViewById(status_bar_ID) - val status_bar_contents: ViewGroup = - MiuiPhoneStatusBarView.findViewById(status_bar_contents_ID) - if (status_bar == null) return@hookAfterMethod - val Clock: View = MiuiPhoneStatusBarView.findViewById(clock_ID) - val phone_status_bar_left_container: ViewGroup = - MiuiPhoneStatusBarView.findViewById(phone_status_bar_left_container_ID) - val fullscreen_notification_icon_area: ViewGroup = - MiuiPhoneStatusBarView.findViewById(fullscreen_notification_icon_area_ID) - val system_icon_area: ViewGroup = - MiuiPhoneStatusBarView.findViewById(system_icon_area_ID) + statusBar = MiuiPhoneStatusBarView.findViewById(statusBarId) + val statusBarContents: ViewGroup = + MiuiPhoneStatusBarView.findViewById(statusBarContentsId) + if (statusBar == null) return@hookAfterMethod + val Clock: View = MiuiPhoneStatusBarView.findViewById(clockId) + val phoneStatusBarLeftContainer: ViewGroup = + MiuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId) + val fullscreenNotificationIconArea: ViewGroup = + MiuiPhoneStatusBarView.findViewById(fullscreenNotificationIconAreaId) + val systemIconArea: ViewGroup = + MiuiPhoneStatusBarView.findViewById(systemIconAreaId) (Clock.parent as ViewGroup).removeView(Clock) - (phone_status_bar_left_container.parent as ViewGroup).removeView( - phone_status_bar_left_container + (phoneStatusBarLeftContainer.parent as ViewGroup).removeView( + phoneStatusBarLeftContainer ) - (fullscreen_notification_icon_area.parent as ViewGroup).removeView( - fullscreen_notification_icon_area + (fullscreenNotificationIconArea.parent as ViewGroup).removeView( + fullscreenNotificationIconArea ) - (system_icon_area.parent as ViewGroup).removeView(system_icon_area) + (systemIconArea.parent as ViewGroup).removeView(systemIconArea) val mConstraintLayoutLp = ConstraintLayout.LayoutParams( ConstraintLayout.LayoutParams.MATCH_PARENT, @@ -83,14 +84,14 @@ class StatusBarLayout : IXposedHookLoadPackage { val mConstraintLayout = ConstraintLayout(context).also { it.layoutParams = mConstraintLayoutLp } - mConstraintLayout.addView(fullscreen_notification_icon_area) + mConstraintLayout.addView(fullscreenNotificationIconArea) val fullscreen_notification_icon_area_lp = FrameLayout.LayoutParams( ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT ) - fullscreen_notification_icon_area.layoutParams = fullscreen_notification_icon_area_lp + fullscreenNotificationIconArea.layoutParams = fullscreen_notification_icon_area_lp //增加一个左对齐布局 mLeftLayout = LinearLayout(context) @@ -112,30 +113,30 @@ class StatusBarLayout : IXposedHookLoadPackage { LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f) mRightLayout!!.layoutParams = RightLp mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL - mLeftLayout!!.addView(phone_status_bar_left_container) + mLeftLayout!!.addView(phoneStatusBarLeftContainer) mLeftLayout!!.addView(mConstraintLayout) mCenterLayout!!.addView(Clock) - mRightLayout!!.addView(system_icon_area) - status_bar_contents.addView(mLeftLayout, 0) - status_bar_contents.addView(mCenterLayout) - status_bar_contents.addView(mRightLayout) + mRightLayout!!.addView(systemIconArea) + statusBarContents.addView(mLeftLayout, 0) + statusBarContents.addView(mCenterLayout) + statusBarContents.addView(mRightLayout) - status_bar_left = status_bar!!.paddingLeft - status_bar_top = status_bar!!.paddingTop - status_bar_right = status_bar!!.paddingRight - status_bar_bottom = status_bar!!.paddingBottom + statusBarLeft = statusBar!!.paddingLeft + statusBarTop = statusBar!!.paddingTop + statusBarRight = statusBar!!.paddingRight + statusBarBottom = statusBar!!.paddingBottom if (XSPUtils.getBoolean("layout_compatibility_mode", false)) { - val custom_left_margin = XSPUtils.getInt("status_bar_left_margin", 0) - if (custom_left_margin != 0) { - status_bar_left = custom_left_margin + val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0) + if (customLeftMargin != 0) { + statusBarLeft = customLeftMargin } - val custom_right_margin = XSPUtils.getInt("status_bar_right_margin", 0) - if (custom_right_margin != 0) { - status_bar_right = custom_right_margin + val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0) + if (customRightMargin != 0) { + statusBarRight = customRightMargin } updateLayout(context) } @@ -143,7 +144,7 @@ class StatusBarLayout : IXposedHookLoadPackage { } val phoneStatusBarViewClass = - "com.android.systemui.statusbar.phone.PhoneStatusBarView".findClass(lpparam.classLoader) + "com.android.systemui.statusbar.phone.PhoneStatusBarView".findClass(getDefaultClassLoader()) phoneStatusBarViewClass.hookAfterMethod("updateLayoutForCutout") { if (XSPUtils.getBoolean("layout_compatibility_mode", false)) { @@ -154,18 +155,18 @@ class StatusBarLayout : IXposedHookLoadPackage { } - fun updateLayout(context: Context) { + private fun updateLayout(context: Context) { //判断屏幕方向 val mConfiguration: Configuration = context.resources.configuration if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { - mLeftLayout!!.setPadding(status_bar_left, 0, 0, 0) - mRightLayout!!.setPadding(0, 0, status_bar_right, 0) - status_bar!!.setPadding(0, status_bar_top, 0, status_bar_bottom) + mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0) + mRightLayout!!.setPadding(0, 0, statusBarRight, 0) + statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom) } else { //横屏状态 mLeftLayout!!.setPadding(175, 0, 0, 0) mRightLayout!!.setPadding(0, 0, 175, 0) - status_bar!!.setPadding(0, status_bar_top, 0, status_bar_bottom) + statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom) } } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt index 7b91bb00..6808a24c 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt @@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.systemui import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class StatusBarNetworkSpeedRefreshSpeed :IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod(lpparam.classLoader, "postUpdateNetworkSpeedDelay", Long::class.java) { +object StatusBarNetworkSpeedRefreshSpeed: HookRegister() { + + override fun init() { + "com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod(getDefaultClassLoader(), "postUpdateNetworkSpeedDelay", Long::class.java) { hasEnable("status_bar_network_speed_refresh_speed") { it.args[0] = 1000L } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeCustomization.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeCustomization.kt index f3d34eb1..02f25f61 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeCustomization.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeCustomization.kt @@ -11,13 +11,12 @@ import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hookAfterConstructor import com.lt2333.simplicitytools.util.hookAfterMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import java.lang.reflect.Method import java.text.SimpleDateFormat import java.util.* -class StatusBarTimeCustomization : IXposedHookLoadPackage { +object StatusBarTimeCustomization: HookRegister() { private val isYear = XSPUtils.getBoolean("status_bar_time_year", false) private val isMonth = XSPUtils.getBoolean("status_bar_time_month", false) @@ -31,15 +30,15 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { private val getClockSize = XSPUtils.getInt("status_bar_clock_size", 0) private val isOpen = XSPUtils.getBoolean("custom_clock_switch", false) private val getClockDoubleSize = XSPUtils.getInt("status_bar_clock_double_line_size", 0) - private var now_time: Date? = null + private var nowTime: Date? = null private var str = "" @SuppressLint("SetTextI18n") - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + override fun init() { if (isOpen) { var c: Context? = null val miuiClockClass = - "com.android.systemui.statusbar.views.MiuiClock".findClass(lpparam.classLoader) + "com.android.systemui.statusbar.views.MiuiClock".findClass(getDefaultClassLoader()) miuiClockClass.hookAfterConstructor( Context::class.java, AttributeSet::class.java, @@ -52,16 +51,16 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { textV.isSingleLine = false if (isDoubleLine) { str = "\n" - var clock_double_line_size = 7F + var clockDoubleLineSize = 7F if (getClockDoubleSize != 0) { - clock_double_line_size = getClockDoubleSize.toFloat() + clockDoubleLineSize = getClockDoubleSize.toFloat() } - textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clock_double_line_size) + textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clockDoubleLineSize) textV.setLineSpacing(0F, 0.8F) } else { if (getClockSize != 0) { - val clock_size = getClockSize.toFloat() - textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clock_size) + val clockSize = getClockSize.toFloat() + textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clockSize) } } val d: Method = textV.javaClass.getDeclaredMethod("updateTime") @@ -87,7 +86,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { Settings.System.TIME_12_24 ) val is24 = t == "24" - now_time = Calendar.getInstance().time + nowTime = Calendar.getInstance().time textV.text = getDate(c!!) + str + getTime(c!!, is24) } } catch (e: Exception) { @@ -96,7 +95,6 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { } } - @SuppressLint("SimpleDateFormat") private fun getDate(context: Context): String { var datePattern = "" @@ -134,7 +132,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { if (!isHideSpace) datePattern = "$datePattern " } } - datePattern = SimpleDateFormat(datePattern).format(now_time) + datePattern = SimpleDateFormat(datePattern).format(nowTime) return datePattern } @@ -144,7 +142,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { val isZh = isZh(context) timePattern += if (t) "HH:mm" else "h:mm" if (isSecond) timePattern += ":ss" - timePattern = SimpleDateFormat(timePattern).format(now_time) + timePattern = SimpleDateFormat(timePattern).format(nowTime) if (isZh) timePattern = getPeriod(isZh) + timePattern else timePattern += getPeriod(isZh) timePattern = getDoubleHour() + timePattern return timePattern @@ -155,7 +153,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { var period = "" if (isPeriod) { if (isZh) { - when (SimpleDateFormat("HH").format(now_time)) { + when (SimpleDateFormat("HH").format(nowTime)) { "00", "01", "02", "03", "04", "05" -> { period = "凌晨" } @@ -176,7 +174,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { } } } else { - period = SimpleDateFormat("a").format(now_time) + period = SimpleDateFormat("a").format(nowTime) if (!isHideSpace) { period = " $period" } @@ -190,7 +188,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage { private fun getDoubleHour(): String { var doubleHour = "" if (isDoubleHour) { - when (SimpleDateFormat("HH").format(now_time)) { + when (SimpleDateFormat("HH").format(nowTime)) { "23", "00" -> { doubleHour = "子时" } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/WaveCharge.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/WaveCharge.kt index 915cedae..6cdb561a 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/WaveCharge.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/WaveCharge.kt @@ -3,12 +3,12 @@ package com.lt2333.simplicitytools.hook.app.systemui import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.hookMethod import com.lt2333.simplicitytools.util.hasEnable -import de.robv.android.xposed.IXposedHookLoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister import de.robv.android.xposed.XposedHelpers -import de.robv.android.xposed.callbacks.XC_LoadPackage -class WaveCharge : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { +object WaveCharge: HookRegister() { + + override fun init() { hasEnable("enable_wave_charge_animation") { findMethod("com.android.keyguard.charge.ChargeUtils") { name == "supportWaveChargeAnimation" @@ -41,4 +41,5 @@ class WaveCharge : IXposedHookLoadPackage { } } } + } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/thememanager/RemoveAds.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/thememanager/RemoveAds.kt index a59fd043..3d3d065e 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/thememanager/RemoveAds.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/thememanager/RemoveAds.kt @@ -3,15 +3,16 @@ package com.lt2333.simplicitytools.hook.app.thememanager import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hasEnable import com.lt2333.simplicitytools.util.hookBeforeMethod -import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.callbacks.XC_LoadPackage +import com.lt2333.simplicitytools.util.xposed.base.HookRegister -class RemoveAds : IXposedHookLoadPackage { - override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { - "com.android.thememanager.basemodule.ad.model.AdInfoResponse".hookBeforeMethod(lpparam.classLoader, "isAdValid", "com.android.thememanager.basemodule.ad.model.AdInfo".findClass(lpparam.classLoader)) { +object RemoveAds : HookRegister() { + + override fun init() { + "com.android.thememanager.basemodule.ad.model.AdInfoResponse".hookBeforeMethod(getDefaultClassLoader(), "isAdValid", "com.android.thememanager.basemodule.ad.model.AdInfo".findClass(getDefaultClassLoader())) { hasEnable("remove_thememanager_ads") { it.result = false } } } + } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/util/xposed/EasyXposedInit.kt b/app/src/main/java/com/lt2333/simplicitytools/util/xposed/EasyXposedInit.kt new file mode 100644 index 00000000..bd3efd63 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/util/xposed/EasyXposedInit.kt @@ -0,0 +1,31 @@ +package com.lt2333.simplicitytools.util.xposed + +import com.github.kyuubiran.ezxhelper.init.EzXHelperInit +import com.github.kyuubiran.ezxhelper.utils.Log.logexIfThrow +import com.lt2333.simplicitytools.util.xposed.base.AppRegister +import de.robv.android.xposed.IXposedHookLoadPackage +import de.robv.android.xposed.IXposedHookZygoteInit +import de.robv.android.xposed.callbacks.XC_LoadPackage + +abstract class EasyXposedInit: IXposedHookLoadPackage, IXposedHookZygoteInit { + + private lateinit var packageParam: XC_LoadPackage.LoadPackageParam + abstract val registeredApp: List + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { + packageParam = lpparam!! + registeredApp.forEach { app -> + if (app.packageName == lpparam.packageName && (lpparam.processName in app.processName || app.processName.isEmpty())) { + EzXHelperInit.initHandleLoadPackage(lpparam) + EzXHelperInit.setLogTag(app.logTag) + EzXHelperInit.setToastTag(app.logTag) + runCatching { app.handleLoadPackage(lpparam) }.logexIfThrow("Failed call handleLoadPackage, package: ${app.packageName}") + } + } + } + + override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam?) { + EzXHelperInit.initZygote(startupParam!!) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/AppRegister.kt b/app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/AppRegister.kt new file mode 100644 index 00000000..778ccc43 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/AppRegister.kt @@ -0,0 +1,30 @@ +package com.lt2333.simplicitytools.util.xposed.base + +import com.github.kyuubiran.ezxhelper.utils.Log +import com.github.kyuubiran.ezxhelper.utils.Log.logexIfThrow +import de.robv.android.xposed.IXposedHookInitPackageResources +import de.robv.android.xposed.IXposedHookLoadPackage +import de.robv.android.xposed.callbacks.XC_InitPackageResources +import de.robv.android.xposed.callbacks.XC_LoadPackage + +abstract class AppRegister: IXposedHookLoadPackage { + + abstract val packageName: String + abstract val processName: List + abstract val logTag: String + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {} + + protected fun autoInitHooks(lpparam: XC_LoadPackage.LoadPackageParam, vararg hook: HookRegister) { + hook.forEach { + runCatching { + if (it.isInit) return@forEach + it.setLoadPackageParam(lpparam) + it.init() + it.isInit = true + Log.i("Inited hook: ${it.javaClass.simpleName}") + }.logexIfThrow("Failed init hook: ${it.javaClass.simpleName}") + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/HookRegister.kt b/app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/HookRegister.kt new file mode 100644 index 00000000..f039c73f --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/util/xposed/base/HookRegister.kt @@ -0,0 +1,25 @@ +package com.lt2333.simplicitytools.util.xposed.base + +import de.robv.android.xposed.callbacks.XC_LoadPackage + +abstract class HookRegister { + private lateinit var lpparam: XC_LoadPackage.LoadPackageParam + var isInit: Boolean = false + abstract fun init() + + fun setLoadPackageParam(loadPackageParam: XC_LoadPackage.LoadPackageParam) { + lpparam = loadPackageParam + } + + protected fun getLoadPackageParam(): XC_LoadPackage.LoadPackageParam { + if (!this::lpparam.isInitialized) { + throw RuntimeException("lpparam should be initialized") + } + return lpparam + } + + protected fun getDefaultClassLoader(): ClassLoader { + return getLoadPackageParam().classLoader + } + +} \ No newline at end of file