From 74eb55ab3940bc2c60d0485c4cbd4da4dbaf41f9 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Sun, 13 Mar 2022 01:59:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=BB=E9=99=A4=E5=85=8D?= =?UTF-8?q?=E6=89=93=E6=89=B0=E9=80=9A=E7=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fankes/coloros/notify/hook/HookConst.kt | 1 + .../fankes/coloros/notify/hook/HookEntry.kt | 24 +++++++++++++++---- .../fankes/coloros/notify/ui/MainActivity.kt | 8 +++++++ app/src/main/res/layout/activity_main.xml | 20 +++++++++++++++- 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/fankes/coloros/notify/hook/HookConst.kt b/app/src/main/java/com/fankes/coloros/notify/hook/HookConst.kt index cc4c98a..0e4db8c 100644 --- a/app/src/main/java/com/fankes/coloros/notify/hook/HookConst.kt +++ b/app/src/main/java/com/fankes/coloros/notify/hook/HookConst.kt @@ -31,6 +31,7 @@ object HookConst { const val ENABLE_NOTIFY_ICON_FIX = "_notify_icon_fix" const val REMOVE_DEV_NOTIFY = "_remove_dev_notify" const val REMOVE_CHANGECP_NOTIFY = "_remove_charge_complete_notify" + const val REMOVE_DNDALERT_NOTIFY = "_remove_dndalert_notify" const val NOTIFY_ICON_DATAS = "_notify_icon_datas" const val SOURCE_SYNC_WAY = "_source_sync_way" diff --git a/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt b/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt index d9d0f78..1a49178 100644 --- a/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt +++ b/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt @@ -38,6 +38,7 @@ import com.fankes.coloros.notify.hook.HookConst.ENABLE_MODULE_LOG import com.fankes.coloros.notify.hook.HookConst.ENABLE_NOTIFY_ICON_FIX import com.fankes.coloros.notify.hook.HookConst.REMOVE_CHANGECP_NOTIFY import com.fankes.coloros.notify.hook.HookConst.REMOVE_DEV_NOTIFY +import com.fankes.coloros.notify.hook.HookConst.REMOVE_DNDALERT_NOTIFY import com.fankes.coloros.notify.hook.HookConst.SYSTEMUI_PACKAGE_NAME import com.fankes.coloros.notify.hook.factory.isAppNotifyHookAllOf import com.fankes.coloros.notify.hook.factory.isAppNotifyHookOf @@ -59,6 +60,7 @@ import com.highcapable.yukihookapi.hook.type.android.IconClass import com.highcapable.yukihookapi.hook.type.android.ImageViewClass import com.highcapable.yukihookapi.hook.type.java.BooleanType import com.highcapable.yukihookapi.hook.type.java.IntType +import com.highcapable.yukihookapi.hook.type.java.LongType import com.highcapable.yukihookapi.hook.xposed.proxy.YukiHookXposedInitProxy @InjectYukiHookWithXposed @@ -90,6 +92,9 @@ class HookEntry : YukiHookXposedInitProxy { /** ColorOS 存在的类 */ private const val SystemPromptControllerClass = "com.oplusos.systemui.statusbar.policy.SystemPromptController" + /** ColorOS 存在的类 */ + private const val DndAlertHelperClass = "com.oplusos.systemui.notification.helper.DndAlertHelper" + /** 根据多个版本存在不同的包名相同的类 */ private val OplusPowerNotificationWarningsClass = VariousClass( "com.oplusos.systemui.notification.power.OplusPowerNotificationWarnings", @@ -309,11 +314,20 @@ class HookEntry : YukiHookXposedInitProxy { } beforeHook { /** 是否移除 */ - if (firstArgs as Int == 7 && prefs.getBoolean( - REMOVE_CHANGECP_NOTIFY, - default = false - ) - ) resultNull() + if (firstArgs as Int == 7 && prefs.getBoolean(REMOVE_CHANGECP_NOTIFY, default = false)) resultNull() + } + } + } + /** 移除免打扰通知 */ + DndAlertHelperClass.hook { + injectMember { + method { + name = "sendNotificationWithEndtime" + param(LongType) + } + beforeHook { + /** 是否移除 */ + if (prefs.getBoolean(REMOVE_DNDALERT_NOTIFY, default = false)) resultNull() } } } diff --git a/app/src/main/java/com/fankes/coloros/notify/ui/MainActivity.kt b/app/src/main/java/com/fankes/coloros/notify/ui/MainActivity.kt index e1a7154..034ad74 100644 --- a/app/src/main/java/com/fankes/coloros/notify/ui/MainActivity.kt +++ b/app/src/main/java/com/fankes/coloros/notify/ui/MainActivity.kt @@ -43,6 +43,7 @@ import com.fankes.coloros.notify.hook.HookConst.ENABLE_MODULE_LOG import com.fankes.coloros.notify.hook.HookConst.ENABLE_NOTIFY_ICON_FIX import com.fankes.coloros.notify.hook.HookConst.REMOVE_CHANGECP_NOTIFY import com.fankes.coloros.notify.hook.HookConst.REMOVE_DEV_NOTIFY +import com.fankes.coloros.notify.hook.HookConst.REMOVE_DNDALERT_NOTIFY import com.fankes.coloros.notify.ui.base.BaseActivity import com.fankes.coloros.notify.utils.factory.* import com.fankes.coloros.notify.utils.tool.SystemUITool @@ -98,6 +99,7 @@ class MainActivity : BaseActivity() { val notifyIconConfigItem = findViewById(R.id.config_item_notify) val devNotifyConfigSwitch = findViewById(R.id.remove_dev_n_enable_switch) val crcpNotifyConfigSwitch = findViewById(R.id.remove_chargecp_n_enable_switch) + val dndNotifyConfigSwitch = findViewById(R.id.remove_dndalert_n_enable_switch) val a12StyleConfigSwitch = findViewById(R.id.a12_style_enable_switch) val hideIconInLauncherSwitch = findViewById(R.id.hide_icon_in_launcher_switch) val notifyIconFixSwitch = findViewById(R.id.notify_icon_fix_switch) @@ -110,6 +112,7 @@ class MainActivity : BaseActivity() { notifyIconFixButton.isVisible = modulePrefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true) devNotifyConfigSwitch.isChecked = modulePrefs.getBoolean(REMOVE_DEV_NOTIFY, default = true) crcpNotifyConfigSwitch.isChecked = modulePrefs.getBoolean(REMOVE_CHANGECP_NOTIFY, default = false) + dndNotifyConfigSwitch.isChecked = modulePrefs.getBoolean(REMOVE_DNDALERT_NOTIFY, default = false) a12StyleConfigSwitch.isChecked = modulePrefs.getBoolean(ENABLE_ANDROID12_STYLE, isUpperOfAndroidS) moduleEnableSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE, default = true) moduleEnableLogSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE_LOG, default = false) @@ -154,6 +157,11 @@ class MainActivity : BaseActivity() { modulePrefs.putBoolean(REMOVE_CHANGECP_NOTIFY, b) SystemUITool.showNeedRestartSnake(context = this) } + dndNotifyConfigSwitch.setOnCheckedChangeListener { btn, b -> + if (!btn.isPressed) return@setOnCheckedChangeListener + modulePrefs.putBoolean(REMOVE_DNDALERT_NOTIFY, b) + SystemUITool.showNeedRestartSnake(context = this) + } a12StyleConfigSwitch.setOnCheckedChangeListener { btn, b -> if (!btn.isPressed) return@setOnCheckedChangeListener modulePrefs.putBoolean(ENABLE_ANDROID12_STYLE, b) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 2a7203d..8f4d5e5 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -233,7 +233,6 @@ android:textSize="15sp" /> + + + +