mirror of
https://github.com/LittleTurtle2333/SimplicityTools.git
synced 2026-07-12 19:31:17 +08:00
优化代码结果,提升稳定性
This commit is contained in:
@@ -1,56 +1,17 @@
|
|||||||
package com.lt2333.simplicitytools.hook.app
|
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.IXposedHookLoadPackage
|
||||||
import de.robv.android.xposed.XC_MethodHook
|
|
||||||
import de.robv.android.xposed.XposedBridge
|
import de.robv.android.xposed.XposedBridge
|
||||||
import de.robv.android.xposed.XposedHelpers
|
|
||||||
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
import de.robv.android.xposed.callbacks.XC_LoadPackage
|
||||||
|
|
||||||
class Android : IXposedHookLoadPackage {
|
class Android : IXposedHookLoadPackage {
|
||||||
|
|
||||||
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
|
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
|
||||||
|
|
||||||
XposedBridge.log("成功Hook: "+javaClass.simpleName)
|
XposedBridge.log("成功Hook: "+javaClass.simpleName)
|
||||||
//允许截图
|
//允许截图
|
||||||
try {
|
DisableFlagSecure().handleLoadPackage(lpparam)
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//上层显示
|
//上层显示
|
||||||
try {
|
DeleteOnPostNotification().handleLoadPackage(lpparam)
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,49 +1,14 @@
|
|||||||
package com.lt2333.simplicitytools.hook.app
|
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.IXposedHookLoadPackage
|
||||||
import de.robv.android.xposed.XC_MethodHook
|
|
||||||
import de.robv.android.xposed.XposedBridge
|
import de.robv.android.xposed.XposedBridge
|
||||||
import de.robv.android.xposed.XposedHelpers
|
|
||||||
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
||||||
|
|
||||||
class MediaEditor : IXposedHookLoadPackage {
|
class MediaEditor : IXposedHookLoadPackage {
|
||||||
|
|
||||||
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
||||||
|
|
||||||
XposedBridge.log("成功Hook: "+javaClass.simpleName)
|
XposedBridge.log("成功Hook: "+javaClass.simpleName)
|
||||||
|
//解锁裁切最小值
|
||||||
//解锁图库裁切最小值
|
UnlockUnlimitedCropping().handleLoadPackage(lpparam)
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,35 +1,14 @@
|
|||||||
package com.lt2333.simplicitytools.hook.app
|
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.IXposedHookLoadPackage
|
||||||
import de.robv.android.xposed.XC_MethodHook
|
|
||||||
import de.robv.android.xposed.XposedBridge
|
import de.robv.android.xposed.XposedBridge
|
||||||
import de.robv.android.xposed.XposedHelpers
|
|
||||||
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
||||||
|
|
||||||
class MiuiHome : IXposedHookLoadPackage {
|
class MiuiHome : IXposedHookLoadPackage {
|
||||||
|
|
||||||
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
||||||
XposedBridge.log("成功Hook: " + javaClass.simpleName)
|
XposedBridge.log("成功Hook: " + javaClass.simpleName)
|
||||||
//始终显示时钟
|
//时钟显示时钟
|
||||||
try {
|
AlwaysDisplayTime().handleLoadPackage(lpparam)
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
package com.lt2333.simplicitytools.hook.app
|
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.IXposedHookLoadPackage
|
||||||
import de.robv.android.xposed.XC_MethodHook
|
|
||||||
import de.robv.android.xposed.XposedBridge
|
import de.robv.android.xposed.XposedBridge
|
||||||
import de.robv.android.xposed.XposedHelpers
|
|
||||||
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
||||||
|
|
||||||
class PowerKeeper : IXposedHookLoadPackage {
|
class PowerKeeper : IXposedHookLoadPackage {
|
||||||
@@ -12,22 +10,7 @@ class PowerKeeper : IXposedHookLoadPackage {
|
|||||||
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
||||||
XposedBridge.log("成功Hook: "+javaClass.simpleName)
|
XposedBridge.log("成功Hook: "+javaClass.simpleName)
|
||||||
//锁定最高刷新率
|
//锁定最高刷新率
|
||||||
val classIfExists = XposedHelpers.findClassIfExists(
|
LockMaxFps().handleLoadPackage(lpparam)
|
||||||
"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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,59 +1,15 @@
|
|||||||
package com.lt2333.simplicitytools.hook.app
|
package com.lt2333.simplicitytools.hook.app
|
||||||
|
|
||||||
import android.widget.TextView
|
import com.lt2333.simplicitytools.hook.app.securitycenter.SkipWaitingTime
|
||||||
import com.lt2333.simplicitytools.util.XSPUtils
|
|
||||||
import de.robv.android.xposed.IXposedHookLoadPackage
|
import de.robv.android.xposed.IXposedHookLoadPackage
|
||||||
import de.robv.android.xposed.XC_MethodHook
|
|
||||||
import de.robv.android.xposed.XposedBridge
|
import de.robv.android.xposed.XposedBridge
|
||||||
import de.robv.android.xposed.XposedHelpers
|
|
||||||
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
||||||
|
|
||||||
class SecurityCenter : IXposedHookLoadPackage {
|
class SecurityCenter : IXposedHookLoadPackage {
|
||||||
|
|
||||||
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
||||||
|
|
||||||
XposedBridge.log("成功Hook: " + javaClass.simpleName)
|
XposedBridge.log("成功Hook: " + javaClass.simpleName)
|
||||||
|
|
||||||
//跳过 5/10秒等待时间
|
//跳过 5/10秒等待时间
|
||||||
var classIfExists = XposedHelpers.findClassIfExists(
|
SkipWaitingTime().handleLoadPackage(lpparam)
|
||||||
"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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,536 +1,54 @@
|
|||||||
package com.lt2333.simplicitytools.hook.app
|
package com.lt2333.simplicitytools.hook.app
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import com.lt2333.simplicitytools.hook.app.systemui.*
|
||||||
import android.content.Context
|
import de.robv.android.xposed.IXposedHookLoadPackage
|
||||||
import android.content.Intent
|
import de.robv.android.xposed.XposedBridge
|
||||||
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 de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
||||||
import java.lang.reflect.Method
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
class SystemUI : IXposedHookLoadPackage {
|
class SystemUI : IXposedHookLoadPackage {
|
||||||
|
|
||||||
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
||||||
XposedBridge.log("成功Hook: " + javaClass.simpleName)
|
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 {
|
HideAirplaneIcon().handleLoadPackage(lpparam)
|
||||||
val classIfExists = XposedHelpers.findClassIfExists(
|
//隐藏闹钟图标
|
||||||
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy",
|
HideAlarmIcon().handleLoadPackage(lpparam)
|
||||||
lpparam.classLoader
|
//隐藏电池
|
||||||
)
|
HideBatteryIcon().handleLoadPackage(lpparam)
|
||||||
XposedHelpers.findAndHookMethod(
|
//隐藏电池/百分号
|
||||||
classIfExists,
|
HideBatteryPercentageIcon().handleLoadPackage(lpparam)
|
||||||
"setIsAirplaneMode",
|
//隐藏蓝牙电量
|
||||||
XposedHelpers.findClass(
|
HideBluetoothHandsfreeBatteryIcon().handleLoadPackage(lpparam)
|
||||||
"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)
|
|
||||||
}
|
|
||||||
//隐藏蓝牙图标
|
//隐藏蓝牙图标
|
||||||
try {
|
HideBluetoothIcon().handleLoadPackage(lpparam)
|
||||||
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)
|
|
||||||
}
|
|
||||||
//隐藏GPS图标
|
//隐藏GPS图标
|
||||||
try {
|
HideGPSIcon().handleLoadPackage(lpparam)
|
||||||
val classIfExists = XposedHelpers.findClassIfExists(
|
//隐藏HD图标
|
||||||
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy",
|
HideHDIcon().handleLoadPackage(lpparam)
|
||||||
lpparam.classLoader
|
//隐藏耳机图标
|
||||||
)
|
HideHeadsetIcon().handleLoadPackage(lpparam)
|
||||||
XposedHelpers.findAndHookMethod(
|
//隐藏热点图标
|
||||||
classIfExists,
|
HideHotspotIcon().handleLoadPackage(lpparam)
|
||||||
"updateLocationFromController",
|
//隐藏无SIM卡图标
|
||||||
object : XC_MethodHook() {
|
HideNoSimIcon().handleLoadPackage(lpparam)
|
||||||
override fun beforeHookedMethod(param: MethodHookParam) {
|
//隐藏SIM卡图标
|
||||||
if (XSPUtils.getBoolean("hide_gps_icon", false)) {
|
HideSimIcon().handleLoadPackage(lpparam)
|
||||||
param.result = null
|
//隐藏辅助WIFI图标
|
||||||
}
|
HideSlaveWifiIcon().handleLoadPackage(lpparam)
|
||||||
}
|
//隐藏状态栏网速/s
|
||||||
})
|
HideStatusBarNetworkSpeedSecond().handleLoadPackage(lpparam)
|
||||||
} catch (e: Exception) {
|
//隐藏音量勿扰图标
|
||||||
XposedBridge.log(e)
|
HideVolumeZenIcon().handleLoadPackage(lpparam)
|
||||||
}
|
//隐藏VPN图标
|
||||||
//隐藏 声音、勿扰 图标
|
HideVpnIcon().handleLoadPackage(lpparam)
|
||||||
try {
|
//隐藏WIFI图标
|
||||||
val classIfExists = XposedHelpers.findClassIfExists(
|
HideWifiIcon().handleLoadPackage(lpparam)
|
||||||
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy",
|
//移除通知图标上限
|
||||||
lpparam.classLoader
|
RemoveTheMaximumNumberOfNotificationIcons().handleLoadPackage(lpparam)
|
||||||
)
|
//状态栏网速秒刷新
|
||||||
XposedHelpers.findAndHookMethod(
|
StatusBarNetworkSpeedRefreshSpeed().handleLoadPackage(lpparam)
|
||||||
classIfExists,
|
//状态栏时钟显秒
|
||||||
"updateVolumeZen",
|
StatusBarTimeSeconds().handleLoadPackage(lpparam)
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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