mirror of
https://github.com/LittleTurtle2333/SimplicityTools.git
synced 2026-07-14 12:21:18 +08:00
优化项目结构,将全部Hook方法转移到Kotlin
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user