mirror of
https://github.com/fankes/MIUINativeNotifyIcon.git
synced 2025-09-06 10:45:20 +08:00
修复一个严重的判断问题,尝试修复 MIPUSH 图标不能 Hook 成功的问题
This commit is contained in:
@@ -282,8 +282,11 @@ class HookMain : IXposedHookLoadPackage {
|
|||||||
* 拥有状态栏图标颜色检查功能
|
* 拥有状态栏图标颜色检查功能
|
||||||
* @return [Boolean]
|
* @return [Boolean]
|
||||||
*/
|
*/
|
||||||
private fun XC_LoadPackage.LoadPackageParam.hasIgnoreStatusBarIconColor() =
|
private fun XC_LoadPackage.LoadPackageParam.hasIgnoreStatusBarIconColor() = try {
|
||||||
isMethodExist(NotificationUtilClass, name = "ignoreStatusBarIconColor")
|
isMethodExist(NotificationUtilClass, name = "ignoreStatusBarIconColor", findClass(ExpandedNotificationClass))
|
||||||
|
} catch (_: Throwable) {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取 [ExpandedNotificationClass] 的应用名称
|
* 获取 [ExpandedNotificationClass] 的应用名称
|
||||||
@@ -622,16 +625,14 @@ class HookMain : IXposedHookLoadPackage {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
/** 之前的版本解决方案 */
|
/** 修复通知图标为彩色 - MIPUSH 修复 */
|
||||||
else runWithoutError(error = "UpdateIconColor") {
|
runWithoutError(error = "UpdateIconColor") {
|
||||||
XposedHelpers.findAndHookMethod(
|
XposedHelpers.findAndHookMethod(
|
||||||
StatusBarIconViewClass,
|
StatusBarIconViewClass,
|
||||||
lpparam.classLoader, "updateIconColor",
|
lpparam.classLoader, "updateIconColor",
|
||||||
object : XC_MethodHook() {
|
object : XC_MethodHook() {
|
||||||
override fun afterHookedMethod(param: MethodHookParam) =
|
override fun afterHookedMethod(param: MethodHookParam) =
|
||||||
runWithoutError(error = "UpdateIconColorOnSet") hook@{
|
runWithoutError(error = "UpdateIconColorOnSet") hook@{
|
||||||
/** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */
|
|
||||||
if (lpparam.isShowMiuiStyle()) return@hook
|
|
||||||
/** 获取自身 */
|
/** 获取自身 */
|
||||||
val iconImageView = param.thisObject as ImageView
|
val iconImageView = param.thisObject as ImageView
|
||||||
|
|
||||||
@@ -641,9 +642,6 @@ class HookMain : IXposedHookLoadPackage {
|
|||||||
isAccessible = true
|
isAccessible = true
|
||||||
}[param.thisObject] as? StatusBarNotification?
|
}[param.thisObject] as? StatusBarNotification?
|
||||||
|
|
||||||
/** 是否忽略图标颜色 */
|
|
||||||
val isIgnoredColor =
|
|
||||||
lpparam.hookIgnoreStatusBarIconColor(iconImageView.context, expandedNf)
|
|
||||||
/** 强制设置图标 - 防止 MIPUSH 不生效 */
|
/** 强制设置图标 - 防止 MIPUSH 不生效 */
|
||||||
lpparam.hookSmallIconOnSet(
|
lpparam.hookSmallIconOnSet(
|
||||||
context = iconImageView.context,
|
context = iconImageView.context,
|
||||||
@@ -651,6 +649,17 @@ class HookMain : IXposedHookLoadPackage {
|
|||||||
iconImageView.drawable,
|
iconImageView.drawable,
|
||||||
isLegacyWay = true
|
isLegacyWay = true
|
||||||
) { icon -> iconImageView.setImageBitmap(icon) }
|
) { icon -> iconImageView.setImageBitmap(icon) }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook
|
||||||
|
* 新版本不需要下面的代码设置颜色 - 同样停止 Hook
|
||||||
|
*/
|
||||||
|
if (lpparam.hasIgnoreStatusBarIconColor() || lpparam.isShowMiuiStyle()) return@hook
|
||||||
|
|
||||||
|
/** 是否忽略图标颜色 */
|
||||||
|
val isIgnoredColor =
|
||||||
|
lpparam.hookIgnoreStatusBarIconColor(iconImageView.context, expandedNf)
|
||||||
|
|
||||||
/** 当前着色颜色 */
|
/** 当前着色颜色 */
|
||||||
val currentColor =
|
val currentColor =
|
||||||
param.thisObject.javaClass.getDeclaredField("mCurrentSetColor").apply {
|
param.thisObject.javaClass.getDeclaredField("mCurrentSetColor").apply {
|
||||||
|
Reference in New Issue
Block a user