From a6166fa70a07db748144dc5e65de6f96af2adbb1 Mon Sep 17 00:00:00 2001 From: LittleTurtle2333 <841474544@qq.com> Date: Thu, 17 Feb 2022 22:27:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E9=83=A8=E4=BD=8D=E7=BD=AE=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0findClassIfExists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simplicitytools/hook/app/Android.kt | 54 +++++---- .../simplicitytools/hook/app/MiuiHome.kt | 8 +- .../simplicitytools/hook/app/PowerKeeper.kt | 11 +- .../simplicitytools/hook/app/SystemUI.kt | 107 +++++++++++++----- 4 files changed, 123 insertions(+), 57 deletions(-) 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 3cb4e688..4d45b99c 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 @@ -11,19 +11,22 @@ class Android : IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { //允许截图 try { - XposedHelpers.findAndHookMethod("com.android.server.wm.WindowState", - lpparam.classLoader, - "isSecureLocked", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - if (prefs.hasFileChanged()) { - prefs.reload() - } - if (prefs.getBoolean("disable_flag_secure", false)) { - param.result = false - } + val classIfExists = XposedHelpers.findClassIfExists( + "com.android.server.wm.WindowState", + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod(classIfExists, + "isSecureLocked", + object : XC_MethodHook() { + override fun beforeHookedMethod(param: MethodHookParam) { + if (prefs.hasFileChanged()) { + prefs.reload() } - }) + if (prefs.getBoolean("disable_flag_secure", false)) { + param.result = false + } + } + }) } catch (e: Exception) { XposedBridge.log(e) } @@ -31,19 +34,22 @@ class Android : IXposedHookLoadPackage { //上层显示 try { - XposedHelpers.findAndHookMethod("com.android.server.wm.AlertWindowNotification", - lpparam.classLoader, - "onPostNotification", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - if (prefs.hasFileChanged()) { - prefs.reload() - } - if (prefs.getBoolean("delete_on_post_notification", false)) { - param.result = null - } + val classIfExists = XposedHelpers.findClassIfExists( + "com.android.server.wm.AlertWindowNotification", + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod(classIfExists, + "onPostNotification", + object : XC_MethodHook() { + override fun beforeHookedMethod(param: MethodHookParam) { + if (prefs.hasFileChanged()) { + prefs.reload() } - }) + if (prefs.getBoolean("delete_on_post_notification", false)) { + param.result = null + } + } + }) } catch (e: Exception) { 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 79ec9b41..4d8d0fb9 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 @@ -1,9 +1,7 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.BuildConfig -import com.lt2333.simplicitytools.hook.MainHook import de.robv.android.xposed.* -import de.robv.android.xposed.XC_MethodHook.MethodHookParam import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam class MiuiHome : IXposedHookLoadPackage { @@ -13,8 +11,12 @@ class MiuiHome : IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: LoadPackageParam) { //始终显示时钟 try { + val classIfExists = XposedHelpers.findClassIfExists( + "com.miui.home.launcher.Workspace", + lpparam.classLoader + ) XposedHelpers.findAndHookMethod( - "com.miui.home.launcher.Workspace", lpparam.classLoader, + classIfExists, "isScreenHasClockGadget", Long::class.javaPrimitiveType, object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { 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 dfe808ca..79158982 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt @@ -1,7 +1,10 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.BuildConfig -import de.robv.android.xposed.* +import de.robv.android.xposed.IXposedHookLoadPackage +import de.robv.android.xposed.XC_MethodHook +import de.robv.android.xposed.XSharedPreferences +import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam class PowerKeeper : IXposedHookLoadPackage { @@ -10,8 +13,12 @@ class PowerKeeper : IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: LoadPackageParam) { //锁定最高刷新率 + val classIfExists = XposedHelpers.findClassIfExists( + "com.miui.powerkeeper.statemachine.DisplayFrameSetting", + lpparam.classLoader + ) XposedHelpers.findAndHookMethod( - "com.miui.powerkeeper.statemachine.DisplayFrameSetting", lpparam.classLoader, + classIfExists, "setScreenEffect", String::class.java, Int::class.javaPrimitiveType, Int::class.javaPrimitiveType, object : XC_MethodHook() { 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 d60ffa37..17b726b5 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 @@ -6,12 +6,9 @@ import android.content.Intent import android.os.Handler import android.provider.Settings import android.util.AttributeSet -import android.util.Log import android.widget.TextView import com.lt2333.simplicitytools.BuildConfig -import com.lt2333.simplicitytools.hook.MainHook import de.robv.android.xposed.* -import de.robv.android.xposed.XC_MethodHook.MethodHookParam import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam import java.lang.reflect.Method import java.text.SimpleDateFormat @@ -24,9 +21,12 @@ class SystemUI : IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: LoadPackageParam) { //隐藏无SIM卡图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "setNoSims", Boolean::class.javaPrimitiveType, Boolean::class.javaPrimitiveType, @@ -45,8 +45,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏VPN图标 try { + val classIfExists = XposedHelpers.findClassIfExists( + "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", + lpparam.classLoader + ) XposedHelpers.findAndHookMethod( - "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader, + classIfExists, "updateVpn", object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { @@ -63,9 +67,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏飞行模式图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "setIsAirplaneMode", XposedHelpers.findClass( "com.android.systemui.statusbar.policy.NetworkController\$IconState", @@ -86,9 +93,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏WIFI图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "updateWifiIconWithState", XposedHelpers.findClass( "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState", @@ -109,9 +119,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏蓝牙图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "updateBluetooth", String::class.java, object : XC_MethodHook() { @@ -129,9 +142,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏 声音、勿扰 图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "updateVolumeZen", object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { @@ -148,9 +164,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏 闹钟 图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "onMiuiAlarmChanged", object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { @@ -167,9 +186,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏 耳机 图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "updateHeadsetPlug", Intent::class.java, object : XC_MethodHook() { @@ -187,9 +209,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏 蓝牙电量 图标 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "updateBluetoothHandsfreeBattery", Intent::class.java, object : XC_MethodHook() { @@ -207,8 +232,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏卡一卡二 try { + val classIfExists = XposedHelpers.findClassIfExists( + "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", + lpparam.classLoader + ) XposedHelpers.findAndHookMethod( - "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader, + classIfExists, "hasCorrectSubs", MutableList::class.java, object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { @@ -231,8 +260,12 @@ class SystemUI : IXposedHookLoadPackage { } //隐藏HD try { + val classIfExists = XposedHelpers.findClassIfExists( + "com.android.systemui.statusbar.policy.MobileSignalController", + lpparam.classLoader + ) XposedHelpers.findAndHookMethod( - "com.android.systemui.statusbar.policy.MobileSignalController", lpparam.classLoader, + classIfExists, "setVolte", Boolean::class.java, object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { @@ -245,9 +278,8 @@ class SystemUI : IXposedHookLoadPackage { } }) - XposedHelpers.findAndHookMethod( - "com.android.systemui.statusbar.policy.MobileSignalController", lpparam.classLoader, + classIfExists, "updateVoiceIcon", object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam) { @@ -262,12 +294,14 @@ class SystemUI : IXposedHookLoadPackage { } catch (e: Exception) { XposedBridge.log(e) } - - //隐藏 网速秒刷 图标 + //网速秒刷 try { - XposedHelpers.findAndHookMethod( + val classIfExists = XposedHelpers.findClassIfExists( "com.android.systemui.statusbar.policy.NetworkSpeedController", - lpparam.classLoader, + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, "postUpdateNetworkSpeedDelay", Long::class.java, object : XC_MethodHook() { @@ -342,7 +376,24 @@ class SystemUI : IXposedHookLoadPackage { }) } + //通知图标上限 + try { + val classIfExists = XposedHelpers.findClassIfExists( + "com.android.systemui.statusbar.phone.NotificationIconContainer", + lpparam.classLoader + ) + XposedHelpers.findAndHookMethod( + classIfExists, + "miuiShowNotificationIcons", + Boolean::class.java, + object : XC_MethodHook() { + override fun beforeHookedMethod(param: MethodHookParam) { + } + }) + } catch (e: Exception) { + XposedBridge.log(e) + } }