优化代码结果,提升稳定性

This commit is contained in:
LittleTurtle2333
2022-02-22 18:11:06 +08:00
parent dbbf693774
commit b4028edd05
32 changed files with 943 additions and 692 deletions

View File

@@ -1,56 +1,17 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.hook.app.android.DeleteOnPostNotification
import com.lt2333.simplicitytools.hook.app.android.DisableFlagSecure
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class Android : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("成功Hook: "+javaClass.simpleName)
//允许截图
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.server.wm.WindowState",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(classIfExists,
"isSecureLocked",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("disable_flag_secure",false)) {
param.result = false
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
DisableFlagSecure().handleLoadPackage(lpparam)
//上层显示
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.server.wm.AlertWindowNotification",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(classIfExists,
"onPostNotification",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("delete_on_post_notification",false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
DeleteOnPostNotification().handleLoadPackage(lpparam)
}
}

View File

@@ -1,49 +1,14 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.hook.app.mediaeditor.UnlockUnlimitedCropping
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
class MediaEditor : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
XposedBridge.log("成功Hook: "+javaClass.simpleName)
//解锁图库裁切最小值
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.core.imports.obsoletes.Crop\$ResizeDetector",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"calculateMinSize",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("unlock_unlimited_cropping",false)) {
param.result = 0
}
}
})
//截图无限裁切
val classIfExists2 = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.screen.crop.ScreenCropView\$ResizeDetector",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists2,
"calculateMinSize",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("unlock_unlimited_cropping",false)) {
param.result = 0
}
}
})
//解锁裁切最小值
UnlockUnlimitedCropping().handleLoadPackage(lpparam)
}
}

View File

@@ -1,35 +1,14 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.hook.app.miuihome.AlwaysDisplayTime
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
class MiuiHome : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
XposedBridge.log("成功Hook: " + javaClass.simpleName)
//始终显示时钟
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.home.launcher.Workspace",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"isScreenHasClockGadget", Long::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("home_time", false)) {
param.result = false
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//时钟显示时钟
AlwaysDisplayTime().handleLoadPackage(lpparam)
}
}

View File

@@ -1,10 +1,8 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.hook.app.powerkeeper.LockMaxFps
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
class PowerKeeper : IXposedHookLoadPackage {
@@ -12,22 +10,7 @@ class PowerKeeper : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
XposedBridge.log("成功Hook: "+javaClass.simpleName)
//锁定最高刷新率
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.powerkeeper.statemachine.DisplayFrameSetting",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setScreenEffect",
String::class.java, Int::class.javaPrimitiveType, Int::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
super.beforeHookedMethod(param)
if (XSPUtils.getBoolean("lock_max_fps",false)) {
param.result = null
}
}
})
LockMaxFps().handleLoadPackage(lpparam)
}
}

View File

@@ -1,59 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.hook.app.securitycenter.SkipWaitingTime
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
class SecurityCenter : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
XposedBridge.log("成功Hook: " + javaClass.simpleName)
//跳过 5/10秒等待时间
var classIfExists = XposedHelpers.findClassIfExists(
"android.widget.TextView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setText",
CharSequence::class.java,
TextView.BufferType::class.java,
Boolean::class.java,
Int::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("skip_waiting_time", false)) {
if (param.args.isNotEmpty() && param.args[0]?.toString()
?.startsWith("确定(") == true
) {
param.args[0] = "确定"
}
}
}
})
//锁定最高刷新率
val classIfExists2 = XposedHelpers.findClassIfExists(
"android.widget.TextView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists2,
"setEnabled",
Boolean::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("skip_waiting_time", false)) {
param.args[0] = true
}
}
})
SkipWaitingTime().handleLoadPackage(lpparam)
}
}

View File

@@ -1,536 +1,54 @@
package com.lt2333.simplicitytools.hook.app
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.os.Handler
import android.provider.Settings
import android.util.AttributeSet
import android.view.View
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.*
import com.lt2333.simplicitytools.hook.app.systemui.*
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import java.lang.reflect.Method
import java.text.SimpleDateFormat
import java.util.*
class SystemUI : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
XposedBridge.log("成功Hook: " + javaClass.simpleName)
//隐藏无SIM卡图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setNoSims",
Boolean::class.javaPrimitiveType,
Boolean::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_no_sim_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏VPN图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateVpn",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_vpn_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏飞行模式图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setIsAirplaneMode",
XposedHelpers.findClass(
"com.android.systemui.statusbar.policy.NetworkController\$IconState",
lpparam.classLoader
),
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_airplane_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏WIFI图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateWifiIconWithState",
XposedHelpers.findClass(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState",
lpparam.classLoader
),
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_wifi_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
HideAirplaneIcon().handleLoadPackage(lpparam)
//隐藏闹钟图标
HideAlarmIcon().handleLoadPackage(lpparam)
//隐藏电池
HideBatteryIcon().handleLoadPackage(lpparam)
//隐藏电池/百分号
HideBatteryPercentageIcon().handleLoadPackage(lpparam)
//隐藏蓝牙电量
HideBluetoothHandsfreeBatteryIcon().handleLoadPackage(lpparam)
//隐藏蓝牙图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateBluetooth",
String::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_bluetooth_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
HideBluetoothIcon().handleLoadPackage(lpparam)
//隐藏GPS图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateLocationFromController",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_gps_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 声音、勿扰 图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateVolumeZen",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_volume_zen_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 闹钟 图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"onMiuiAlarmChanged",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_alarm_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 耳机 图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateHeadsetPlug",
Intent::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_headset_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 蓝牙电量 图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateBluetoothHandsfreeBattery",
Intent::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_bluetooth_battery_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏 辅助WIFI 图标
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.policy.SlaveWifiSignalController",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateIconState",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_slave_wifi_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏卡一卡二
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"hasCorrectSubs", MutableList::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
val list = param.args[0] as MutableList<*>
val size = list.size
if (size == 2 && XSPUtils.getBoolean("hide_sim_two_icon", false)) {
list.removeAt(1)
}
if (size >= 1 && XSPUtils.getBoolean("hide_sim_one_icon", false)) {
list.removeAt(0)
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏HD
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.StatusBarMobileView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"initViewState",
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_big_hd_icon", false)) {
val bigHd = XposedHelpers.getObjectField(
param.thisObject,
"mVolte"
) as ImageView
bigHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_small_hd_icon", false)) {
val smallHd = XposedHelpers.getObjectField(
param.thisObject,
"mSmallHd"
) as ImageView
smallHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_hd_no_service_icon", false)) {
val volteNoService = XposedHelpers.getObjectField(
param.thisObject,
"mVolteNoService"
) as ImageView
volteNoService.visibility = View.GONE
}
}
})
XposedHelpers.findAndHookMethod(
classIfExists,
"updateState",
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_big_hd_icon", false)) {
val bigHd = XposedHelpers.getObjectField(
param.thisObject,
"mVolte"
) as ImageView
bigHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_small_hd_icon", false)) {
val smallHd = XposedHelpers.getObjectField(
param.thisObject,
"mSmallHd"
) as ImageView
smallHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_hd_no_service_icon", false)) {
val volteNoService = XposedHelpers.getObjectField(
param.thisObject,
"mVolteNoService"
) as ImageView
volteNoService.visibility = View.GONE
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//网速秒刷
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.policy.NetworkSpeedController",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"postUpdateNetworkSpeedDelay",
Long::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("status_bar_network_speed_refresh_speed", false)) {
param.args[0] = 1000L
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏网速/s
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.NetworkSpeedView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setNetworkSpeed",
String::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_status_bar_network_speed_second", false)) {
if (param.args[0] != null) {
param.args[0] = (param.args[0] as String)
.replace("/", "")
.replace("s", "")
.replace("'", "")
}
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//隐藏WIFI热点
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy\$2",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"onHotspotChanged",
Boolean::class.java, Int::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_hotspot_icon", false)) {
param.result = null
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
//时钟显秒
if (XSPUtils.getBoolean("status_bar_time_seconds", false)) {
var c: Context? = null
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.MiuiClock",
lpparam.classLoader
)
XposedHelpers.findAndHookConstructor(classIfExists,
Context::class.java,
AttributeSet::class.java,
Integer.TYPE,
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
c = param.args[0] as Context
val textV = param.thisObject as TextView
val d: Method = textV.javaClass.getDeclaredMethod("updateTime")
val r = Runnable {
d.isAccessible = true
d.invoke(textV)
}
class T : TimerTask() {
override fun run() {
Handler(textV.context.mainLooper).post(r)
}
}
if (textV.resources.getResourceEntryName(textV.id) == "clock")
Timer().scheduleAtFixedRate(
T(),
1000 - System.currentTimeMillis() % 1000,
1000
)
}
}
)
XposedHelpers.findAndHookMethod(classIfExists, "updateTime",
object : XC_MethodHook() {
@SuppressLint("SetTextI18n", "SimpleDateFormat")
override fun afterHookedMethod(param: MethodHookParam) {
val textV = param.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString(
c!!.contentResolver,
Settings.System.TIME_12_24
)
if (t == "24")
textV.text =
SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().time)
else
textV.text =
textV.text.toString() + SimpleDateFormat(":ss").format(Calendar.getInstance().time)
}
}
})
}
//通知图标上限
if (XSPUtils.getBoolean("remove_the_maximum_number_of_notification_icons", false)) {
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.NotificationIconContainer",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"miuiShowNotificationIcons",
Boolean::class.java,
object : XC_MethodReplacement() {
override fun replaceHookedMethod(param: MethodHookParam) {
if (param.args[0] as Boolean) {
XposedHelpers.setIntField(param.thisObject, "MAX_DOTS", 30)
XposedHelpers.setIntField(param.thisObject, "MAX_STATIC_ICONS", 30)
XposedHelpers.setIntField(
param.thisObject,
"MAX_VISIBLE_ICONS_ON_LOCK",
30
)
} else {
XposedHelpers.setIntField(param.thisObject, "MAX_DOTS", 0)
XposedHelpers.setIntField(param.thisObject, "MAX_STATIC_ICONS", 0)
XposedHelpers.setIntField(
param.thisObject,
"MAX_VISIBLE_ICONS_ON_LOCK",
0
)
}
XposedHelpers.callMethod(param.thisObject, "updateState")
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
}
//隐藏电量百分号
try {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.MiuiBatteryMeterView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateResources",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_battery_percentage_icon", false)) {
val mBatteryPercentMarkView = XposedHelpers.getObjectField(
param.thisObject,
"mBatteryPercentMarkView"
) as TextView
mBatteryPercentMarkView.textSize = 0F
}
if (XSPUtils.getBoolean("hide_battery_icon", false)) {
val mBatteryIconView = XposedHelpers.getObjectField(
param.thisObject,
"mBatteryDigitalView"
) as FrameLayout
mBatteryIconView.visibility = View.GONE
}
}
})
} catch (e: Exception) {
XposedBridge.log(e)
}
HideGPSIcon().handleLoadPackage(lpparam)
//隐藏HD图标
HideHDIcon().handleLoadPackage(lpparam)
//隐藏耳机图标
HideHeadsetIcon().handleLoadPackage(lpparam)
//隐藏热点图标
HideHotspotIcon().handleLoadPackage(lpparam)
//隐藏无SIM卡图标
HideNoSimIcon().handleLoadPackage(lpparam)
//隐藏SIM卡图标
HideSimIcon().handleLoadPackage(lpparam)
//隐藏辅助WIFI图标
HideSlaveWifiIcon().handleLoadPackage(lpparam)
//隐藏状态栏网速/s
HideStatusBarNetworkSpeedSecond().handleLoadPackage(lpparam)
//隐藏音量勿扰图标
HideVolumeZenIcon().handleLoadPackage(lpparam)
//隐藏VPN图标
HideVpnIcon().handleLoadPackage(lpparam)
//隐藏WIFI图标
HideWifiIcon().handleLoadPackage(lpparam)
//移除通知图标上限
RemoveTheMaximumNumberOfNotificationIcons().handleLoadPackage(lpparam)
//状态栏网速秒刷新
StatusBarNetworkSpeedRefreshSpeed().handleLoadPackage(lpparam)
//状态栏时钟显秒
StatusBarTimeSeconds().handleLoadPackage(lpparam)
}
}

View File

@@ -0,0 +1,25 @@
package com.lt2333.simplicitytools.hook.app.android
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class DeleteOnPostNotification : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.server.wm.AlertWindowNotification",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(classIfExists,
"onPostNotification",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("delete_on_post_notification", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,25 @@
package com.lt2333.simplicitytools.hook.app.android
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class DisableFlagSecure :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.server.wm.WindowState",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(classIfExists,
"isSecureLocked",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("disable_flag_secure",false)) {
param.result = false
}
}
})
}
}

View File

@@ -0,0 +1,43 @@
package com.lt2333.simplicitytools.hook.app.mediaeditor
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class UnlockUnlimitedCropping :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
//解锁图库裁切最小值
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.core.imports.obsoletes.Crop\$ResizeDetector",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"calculateMinSize",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("unlock_unlimited_cropping",false)) {
param.result = 0
}
}
})
//截图无限裁切
val classIfExists2 = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.screen.crop.ScreenCropView\$ResizeDetector",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists2,
"calculateMinSize",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("unlock_unlimited_cropping",false)) {
param.result = 0
}
}
})
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.hook.app.miuihome
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class AlwaysDisplayTime : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.home.launcher.Workspace",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"isScreenHasClockGadget", Long::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("home_time", false)) {
param.result = false
}
}
})
}
}

View File

@@ -0,0 +1,28 @@
package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class LockMaxFps : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.powerkeeper.statemachine.DisplayFrameSetting",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setScreenEffect",
String::class.java, Int::class.javaPrimitiveType, Int::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
super.beforeHookedMethod(param)
if (XSPUtils.getBoolean("lock_max_fps", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,52 @@
package com.lt2333.simplicitytools.hook.app.securitycenter
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class SkipWaitingTime : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
var classIfExists = XposedHelpers.findClassIfExists(
"android.widget.TextView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setText",
CharSequence::class.java,
TextView.BufferType::class.java,
Boolean::class.java,
Int::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("skip_waiting_time", false)) {
if (param.args.isNotEmpty() && param.args[0]?.toString()
?.startsWith("确定(") == true
) {
param.args[0] = "确定"
}
}
}
})
val classIfExists2 = XposedHelpers.findClassIfExists(
"android.widget.TextView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists2,
"setEnabled",
Boolean::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("skip_waiting_time", false)) {
param.args[0] = true
}
}
})
}
}

View File

@@ -0,0 +1,30 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideAirplaneIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setIsAirplaneMode",
XposedHelpers.findClass(
"com.android.systemui.statusbar.policy.NetworkController\$IconState",
lpparam.classLoader
),
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_airplane_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideAlarmIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"onMiuiAlarmChanged",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_alarm_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,32 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View
import android.widget.FrameLayout
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideBatteryIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.MiuiBatteryMeterView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateResources",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_battery_icon", false)) {
val mBatteryIconView = XposedHelpers.getObjectField(
param.thisObject,
"mBatteryDigitalView"
) as FrameLayout
mBatteryIconView.visibility = View.GONE
}
}
})
}
}

View File

@@ -0,0 +1,40 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View
import android.widget.FrameLayout
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideBatteryPercentageIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.MiuiBatteryMeterView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateResources",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_battery_percentage_icon", false)) {
val mBatteryPercentMarkView = XposedHelpers.getObjectField(
param.thisObject,
"mBatteryPercentMarkView"
) as TextView
mBatteryPercentMarkView.textSize = 0F
}
if (XSPUtils.getBoolean("hide_battery_icon", false)) {
val mBatteryIconView = XposedHelpers.getObjectField(
param.thisObject,
"mBatteryDigitalView"
) as FrameLayout
mBatteryIconView.visibility = View.GONE
}
}
})
}
}

View File

@@ -0,0 +1,28 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Intent
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideBluetoothHandsfreeBatteryIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateBluetoothHandsfreeBattery",
Intent::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_bluetooth_battery_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,27 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideBluetoothIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateBluetooth",
String::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_bluetooth_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideGPSIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateLocationFromController",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_gps_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,77 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View
import android.widget.ImageView
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideHDIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.StatusBarMobileView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"initViewState",
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_big_hd_icon", false)) {
val bigHd = XposedHelpers.getObjectField(
param.thisObject,
"mVolte"
) as ImageView
bigHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_small_hd_icon", false)) {
val smallHd = XposedHelpers.getObjectField(
param.thisObject,
"mSmallHd"
) as ImageView
smallHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_hd_no_service_icon", false)) {
val volteNoService = XposedHelpers.getObjectField(
param.thisObject,
"mVolteNoService"
) as ImageView
volteNoService.visibility = View.GONE
}
}
})
XposedHelpers.findAndHookMethod(
classIfExists,
"updateState",
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_big_hd_icon", false)) {
val bigHd = XposedHelpers.getObjectField(
param.thisObject,
"mVolte"
) as ImageView
bigHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_small_hd_icon", false)) {
val smallHd = XposedHelpers.getObjectField(
param.thisObject,
"mSmallHd"
) as ImageView
smallHd.visibility = View.GONE
}
if (XSPUtils.getBoolean("hide_hd_no_service_icon", false)) {
val volteNoService = XposedHelpers.getObjectField(
param.thisObject,
"mVolteNoService"
) as ImageView
volteNoService.visibility = View.GONE
}
}
})
}
}

View File

@@ -0,0 +1,28 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Intent
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideHeadsetIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateHeadsetPlug",
Intent::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_headset_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,27 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideHotspotIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy\$2",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"onHotspotChanged",
Boolean::class.java, Int::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_hotspot_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,28 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideNoSimIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setNoSims",
Boolean::class.javaPrimitiveType,
Boolean::class.javaPrimitiveType,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_no_sim_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,32 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideSimIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"hasCorrectSubs", MutableList::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
val list = param.args[0] as MutableList<*>
val size = list.size
if (size == 2 && XSPUtils.getBoolean("hide_sim_two_icon", false)) {
list.removeAt(1)
}
if (size >= 1 && XSPUtils.getBoolean("hide_sim_one_icon", false)) {
list.removeAt(0)
}
}
})
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideSlaveWifiIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.policy.SlaveWifiSignalController",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateIconState",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_slave_wifi_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,32 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideStatusBarNetworkSpeedSecond :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.NetworkSpeedView",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"setNetworkSpeed",
String::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_status_bar_network_speed_second", false)) {
if (param.args[0] != null) {
param.args[0] = (param.args[0] as String)
.replace("/", "")
.replace("s", "")
.replace("'", "")
}
}
}
})
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideVolumeZenIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateVolumeZen",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_volume_zen_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideVpnIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateVpn",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_vpn_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,30 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideWifiIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"updateWifiIconWithState",
XposedHelpers.findClass(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState",
lpparam.classLoader
),
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("hide_wifi_icon", false)) {
param.result = null
}
}
})
}
}

View File

@@ -0,0 +1,46 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodReplacement
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class RemoveTheMaximumNumberOfNotificationIcons : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (XSPUtils.getBoolean("remove_the_maximum_number_of_notification_icons", false)) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.phone.NotificationIconContainer",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"miuiShowNotificationIcons",
Boolean::class.java,
object : XC_MethodReplacement() {
override fun replaceHookedMethod(param: MethodHookParam) {
if (param.args[0] as Boolean) {
XposedHelpers.setIntField(param.thisObject, "MAX_DOTS", 30)
XposedHelpers.setIntField(param.thisObject, "MAX_STATIC_ICONS", 30)
XposedHelpers.setIntField(
param.thisObject,
"MAX_VISIBLE_ICONS_ON_LOCK",
30
)
} else {
XposedHelpers.setIntField(param.thisObject, "MAX_DOTS", 0)
XposedHelpers.setIntField(param.thisObject, "MAX_STATIC_ICONS", 0)
XposedHelpers.setIntField(
param.thisObject,
"MAX_VISIBLE_ICONS_ON_LOCK",
0
)
}
XposedHelpers.callMethod(param.thisObject, "updateState")
}
})
}
}
}

View File

@@ -0,0 +1,27 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class StatusBarNetworkSpeedRefreshSpeed :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.policy.NetworkSpeedController",
lpparam.classLoader
)
XposedHelpers.findAndHookMethod(
classIfExists,
"postUpdateNetworkSpeedDelay",
Long::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("status_bar_network_speed_refresh_speed", false)) {
param.args[0] = 1000L
}
}
})
}
}

View File

@@ -0,0 +1,76 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.provider.Settings
import android.util.AttributeSet
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
import java.lang.reflect.Method
import java.text.SimpleDateFormat
import java.util.*
class StatusBarTimeSeconds :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (XSPUtils.getBoolean("status_bar_time_seconds", false)) {
var c: Context? = null
val classIfExists = XposedHelpers.findClassIfExists(
"com.android.systemui.statusbar.views.MiuiClock",
lpparam.classLoader
)
XposedHelpers.findAndHookConstructor(classIfExists,
Context::class.java,
AttributeSet::class.java,
Integer.TYPE,
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
c = param.args[0] as Context
val textV = param.thisObject as TextView
val d: Method = textV.javaClass.getDeclaredMethod("updateTime")
val r = Runnable {
d.isAccessible = true
d.invoke(textV)
}
class T : TimerTask() {
override fun run() {
Handler(textV.context.mainLooper).post(r)
}
}
if (textV.resources.getResourceEntryName(textV.id) == "clock")
Timer().scheduleAtFixedRate(
T(),
1000 - System.currentTimeMillis() % 1000,
1000
)
}
}
)
XposedHelpers.findAndHookMethod(classIfExists, "updateTime",
object : XC_MethodHook() {
@SuppressLint("SetTextI18n", "SimpleDateFormat")
override fun afterHookedMethod(param: MethodHookParam) {
val textV = param.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString(
c!!.contentResolver,
Settings.System.TIME_12_24
)
if (t == "24")
textV.text =
SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().time)
else
textV.text =
textV.text.toString() + SimpleDateFormat(":ss").format(Calendar.getInstance().time)
}
}
})
}
}
}