mirror of
https://github.com/fankes/ColorOSNotifyIcon.git
synced 2025-09-05 18:25:28 +08:00
fix: block coloros 15 useAppIconForSmallIcon method (#77)
This commit is contained in:
@@ -88,6 +88,8 @@ import com.highcapable.yukihookapi.hook.type.java.FloatType
|
||||
import com.highcapable.yukihookapi.hook.type.java.IntType
|
||||
import com.highcapable.yukihookapi.hook.type.java.LongType
|
||||
import top.defaults.drawabletoolbox.DrawableBuilder
|
||||
import androidx.core.graphics.drawable.toDrawable
|
||||
import com.highcapable.yukihookapi.hook.type.android.NotificationClass
|
||||
|
||||
/**
|
||||
* 系统界面核心 Hook 类
|
||||
@@ -143,6 +145,9 @@ object SystemUIHooker : YukiBaseHooker() {
|
||||
/** ColorOS 存在的类 - 旧版本不存在 */
|
||||
private val BasePlayViewHolderClass by lazyClassOrNull("com.oplusos.systemui.media.base.BasePlayViewHolder")
|
||||
|
||||
/** ColorOS 存在的类 - 旧版本不存在 */
|
||||
private val OplusNotificationSmallIconUtilClass by lazyClassOrNull("com.oplus.systemui.statusbar.notification.util.OplusNotificationSmallIconUtil")
|
||||
|
||||
/** 根据多个版本存在不同的包名相同的类 */
|
||||
private val OplusNotificationIconAreaControllerClass by lazyClass(
|
||||
VariousClass(
|
||||
@@ -434,7 +439,7 @@ object SystemUIHooker : YukiBaseHooker() {
|
||||
iconDatas.takeIf { it.isNotEmpty() }?.forEach {
|
||||
if (packageName == it.packageName && isAppNotifyHookOf(it)) {
|
||||
if (isGrayscaleIcon.not() || isAppNotifyHookAllOf(it))
|
||||
customPair = Triple(BitmapDrawable(context.resources, it.iconBitmap), it.iconColor, false)
|
||||
customPair = Triple(it.iconBitmap.toDrawable(context.resources), it.iconColor, false)
|
||||
return@run
|
||||
}
|
||||
}
|
||||
@@ -696,6 +701,13 @@ object SystemUIHooker : YukiBaseHooker() {
|
||||
/** 是否移除 */
|
||||
if (ConfigData.isEnableRemoveDndAlertNotify) resultNull()
|
||||
}
|
||||
/** 拦截ColorOS使用应用图标判断 */
|
||||
OplusNotificationSmallIconUtilClass?.method {
|
||||
name = "useAppIconForSmallIcon"
|
||||
param(NotificationClass)
|
||||
}?.hook()?.before {
|
||||
resultFalse()
|
||||
}
|
||||
/** 修复并替换 ColorOS 以及原生灰度图标色彩判断 */
|
||||
NotificationUtilsClass.apply {
|
||||
method {
|
||||
@@ -768,8 +780,8 @@ object SystemUIHooker : YukiBaseHooker() {
|
||||
}.onFind { way = 2 }
|
||||
}.hook().after {
|
||||
when (way) {
|
||||
1 -> notificationIconContainer = OplusNotificationIconAreaControllerClass.method { name = "getNotificationIcons" }.get(instance).invoke()
|
||||
2 -> {
|
||||
2 -> notificationIconContainer = OplusNotificationIconAreaControllerClass.method { name = "getNotificationIcons" }.get(instance).invoke()
|
||||
1 -> {
|
||||
notificationIconInstances.clear()
|
||||
field { name = "mLastToShow" }.get(instance).list<View>()
|
||||
.takeIf { it.isNotEmpty() }?.forEach { notificationIconInstances.add(it) }
|
||||
|
Reference in New Issue
Block a user