mirror of
https://github.com/LittleTurtle2333/SimplicityTools.git
synced 2026-07-12 11:21:18 +08:00
优化代码结果,提升稳定性
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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("'", "")
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user