diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt index c23fcaf8..671a5f30 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Android.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt index 062ce582..451919f6 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MediaEditor.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt index d8311981..768ec23d 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/MiuiHome.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt index 50df390a..def4bac7 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/PowerKeeper.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt index 9337a9fa..8909bd80 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt @@ -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) } } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt index 7e8158cb..bfe7741f 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt @@ -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) } } diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt new file mode 100644 index 00000000..b72f07b6 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DeleteOnPostNotification.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt new file mode 100644 index 00000000..f5042b60 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt new file mode 100644 index 00000000..3d79497f --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/mediaeditor/UnlockUnlimitedCropping.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt new file mode 100644 index 00000000..1a2a218e --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/miuihome/AlwaysDisplayTime.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt new file mode 100644 index 00000000..ebb42262 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/powerkeeper/LockMaxFps.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt new file mode 100644 index 00000000..930bcaf9 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/SkipWaitingTime.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideAirplaneIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideAirplaneIcon.kt new file mode 100644 index 00000000..1ce533c6 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideAirplaneIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideAlarmIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideAlarmIcon.kt new file mode 100644 index 00000000..eadce529 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideAlarmIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt new file mode 100644 index 00000000..8a6c4d63 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryPercentageIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryPercentageIcon.kt new file mode 100644 index 00000000..42a8fa47 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBatteryPercentageIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBluetoothHandsfreeBatteryIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBluetoothHandsfreeBatteryIcon.kt new file mode 100644 index 00000000..3b038dc6 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBluetoothHandsfreeBatteryIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBluetoothIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBluetoothIcon.kt new file mode 100644 index 00000000..4e51d50c --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideBluetoothIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideGPSIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideGPSIcon.kt new file mode 100644 index 00000000..ab6de7d5 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideGPSIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt new file mode 100644 index 00000000..7faf1e9f --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHDIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHeadsetIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHeadsetIcon.kt new file mode 100644 index 00000000..1427b06d --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHeadsetIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHotspotIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHotspotIcon.kt new file mode 100644 index 00000000..79f16c53 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideHotspotIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNoSimIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNoSimIcon.kt new file mode 100644 index 00000000..d5119918 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideNoSimIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt new file mode 100644 index 00000000..93449073 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSimIcon.kt @@ -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) + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSlaveWifiIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSlaveWifiIcon.kt new file mode 100644 index 00000000..51830678 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideSlaveWifiIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt new file mode 100644 index 00000000..0ff8c068 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideStatusBarNetworkSpeedSecond.kt @@ -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("'", "") + } + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideVolumeZenIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideVolumeZenIcon.kt new file mode 100644 index 00000000..8101b1b4 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideVolumeZenIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideVpnIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideVpnIcon.kt new file mode 100644 index 00000000..266bd10b --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideVpnIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiIcon.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiIcon.kt new file mode 100644 index 00000000..6ca9c89d --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/HideWifiIcon.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt new file mode 100644 index 00000000..fb8d8d09 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/RemoveTheMaximumNumberOfNotificationIcons.kt @@ -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") + } + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt new file mode 100644 index 00000000..400d57da --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarNetworkSpeedRefreshSpeed.kt @@ -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 + } + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeSeconds.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeSeconds.kt new file mode 100644 index 00000000..f85bcf83 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/StatusBarTimeSeconds.kt @@ -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) + } + } + }) + + } + } +} \ No newline at end of file