优化项目结构,将全部Hook方法转移到Kotlin

This commit is contained in:
LittleTurtle2333
2022-02-15 16:33:45 +08:00
parent d9780c9e3d
commit 9fea21b885
11 changed files with 455 additions and 415 deletions

View File

@@ -0,0 +1,29 @@
package com.lt2333.simplicitytools.hook
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import com.lt2333.simplicitytools.hook.app.PowerKeeper
import com.lt2333.simplicitytools.hook.app.SystemUI
import com.lt2333.simplicitytools.hook.app.MiuiHome
import com.lt2333.simplicitytools.hook.app.Android
class MainHook : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
when (lpparam.packageName) {
"com.miui.powerkeeper" -> {
PowerKeeper().handleLoadPackage(lpparam)
}
"com.android.systemui" -> {
SystemUI().handleLoadPackage(lpparam)
}
"com.miui.home" -> {
MiuiHome().handleLoadPackage(lpparam)
}
"android" -> {
Android().handleLoadPackage(lpparam)
}
}
}
}

View File

@@ -0,0 +1,31 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.BuildConfig
import de.robv.android.xposed.*
import de.robv.android.xposed.callbacks.XC_LoadPackage
class Android : IXposedHookLoadPackage {
var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
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
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
}
}

View File

@@ -0,0 +1,34 @@
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 {
var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
override fun handleLoadPackage(lpparam: LoadPackageParam) {
//始终显示时钟
try {
XposedHelpers.findAndHookMethod(
"com.miui.home.launcher.Workspace", lpparam.classLoader,
"isScreenHasClockGadget", Long::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("home_time", false)) {
param.result = false
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
}
}

View File

@@ -0,0 +1,30 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.BuildConfig
import de.robv.android.xposed.*
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
class PowerKeeper : IXposedHookLoadPackage {
var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
override fun handleLoadPackage(lpparam: LoadPackageParam) {
//锁定最高刷新率
XposedHelpers.findAndHookMethod(
"com.miui.powerkeeper.statemachine.DisplayFrameSetting", lpparam.classLoader,
"setScreenEffect",
String::class.java, Int::class.javaPrimitiveType, Int::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
super.beforeHookedMethod(param)
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("lock_max_fps", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,226 @@
package com.lt2333.simplicitytools.hook.app
import android.content.Intent
import android.util.Log
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 SystemUI : IXposedHookLoadPackage {
var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
override fun handleLoadPackage(lpparam: LoadPackageParam) {
//隐藏无SIM卡图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy",
lpparam.classLoader,
"setNoSims",
Boolean::class.javaPrimitiveType,
Boolean::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_no_sim_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏VPN图标
//隐藏VPN图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
"updateVpn",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_vpn_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏飞行模式图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader,
"setIsAirplaneMode",
XposedHelpers.findClass(
"com.android.systemui.statusbar.policy.NetworkController\$IconState",
lpparam.classLoader
),
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_airplane_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏WIFI图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy",
lpparam.classLoader,
"updateWifiIconWithState",
XposedHelpers.findClass(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState",
lpparam.classLoader
),
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_wifi_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏蓝牙图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader,
"updateBluetooth",
String::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_bluetooth_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 声音、勿扰 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader,
"updateVolumeZen",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_volume_zen_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 闹钟 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader,
"onMiuiAlarmChanged",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_alarm_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 耳机 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader,
"updateHeadsetPlug",
Intent::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_headset_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 蓝牙电量 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader,
"updateBluetoothHandsfreeBattery",
Intent::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
if (prefs.getBoolean("hide_bluetooth_battery_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏卡一卡二
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
"hasCorrectSubs", MutableList::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (prefs.hasFileChanged()) {
prefs.reload()
}
val list = param.args[0] as MutableList<*>
val size = list.size
if (size == 2 && prefs.getBoolean("hide_sim_two_icon", false)) {
list.removeAt(1)
}
if (size >= 1 && prefs.getBoolean("hide_sim_one_icon", false)) {
list.removeAt(0)
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
}
}