mirror of
https://github.com/fankes/MIUINativeNotifyIcon.git
synced 2025-09-07 03:05:51 +08:00
修复一个设置逻辑错误的问题
This commit is contained in:
@@ -30,7 +30,7 @@ object HookConst {
|
|||||||
const val ENABLE_MODULE_LOG = "_enable_module_log"
|
const val ENABLE_MODULE_LOG = "_enable_module_log"
|
||||||
const val ENABLE_HIDE_ICON = "_hide_icon"
|
const val ENABLE_HIDE_ICON = "_hide_icon"
|
||||||
const val ENABLE_COLOR_ICON_HOOK = "_color_icon_hook"
|
const val ENABLE_COLOR_ICON_HOOK = "_color_icon_hook"
|
||||||
const val ENABLE_NOTIFY_ICON_HOOK = "_notify_icon_hook"
|
const val ENABLE_NOTIFY_ICON_FIX = "_notify_icon_fix"
|
||||||
|
|
||||||
const val SYSTEMUI_PACKAGE_NAME = "com.android.systemui"
|
const val SYSTEMUI_PACKAGE_NAME = "com.android.systemui"
|
||||||
}
|
}
|
@@ -37,7 +37,7 @@ import androidx.core.graphics.drawable.toBitmap
|
|||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_HOOK
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_HOOK
|
||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE
|
||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG
|
||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_HOOK
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_FIX
|
||||||
import com.fankes.miui.notify.hook.HookConst.SYSTEMUI_PACKAGE_NAME
|
import com.fankes.miui.notify.hook.HookConst.SYSTEMUI_PACKAGE_NAME
|
||||||
import com.fankes.miui.notify.hook.factory.isAppNotifyHookAllOf
|
import com.fankes.miui.notify.hook.factory.isAppNotifyHookAllOf
|
||||||
import com.fankes.miui.notify.hook.factory.isAppNotifyHookOf
|
import com.fankes.miui.notify.hook.factory.isAppNotifyHookOf
|
||||||
@@ -216,13 +216,15 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
it: (Bitmap) -> Unit
|
it: (Bitmap) -> Unit
|
||||||
) = safeRun(msg = "GetSmallIconOnSet") {
|
) = safeRun(msg = "GetSmallIconOnSet") {
|
||||||
if (iconDrawable == null) return@safeRun
|
if (iconDrawable == null) return@safeRun
|
||||||
|
/** 如果没开启修复 APP 的彩色图标 */
|
||||||
|
if (!prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) return@safeRun
|
||||||
/** 判断是否不是灰度图标 */
|
/** 判断是否不是灰度图标 */
|
||||||
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable)
|
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable)
|
||||||
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
|
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
|
||||||
expandedNf?.also { notifyInstance ->
|
expandedNf?.also { notifyInstance ->
|
||||||
/** 目标彩色通知 APP 图标 */
|
/** 目标彩色通知 APP 图标 */
|
||||||
var customIcon: Bitmap? = null
|
var customIcon: Bitmap? = null
|
||||||
if (prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true))
|
if (prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true))
|
||||||
run {
|
run {
|
||||||
IconPackParams.iconDatas.forEach {
|
IconPackParams.iconDatas.forEach {
|
||||||
if ((notifyInstance.opPkgName == it.packageName ||
|
if ((notifyInstance.opPkgName == it.packageName ||
|
||||||
@@ -239,8 +241,8 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
if (prefs.getBoolean(ENABLE_MODULE_LOG))
|
if (prefs.getBoolean(ENABLE_MODULE_LOG))
|
||||||
loggerD(msg = "hook Icon [${findAppName(notifyInstance)}][${notifyInstance.opPkgName}] custom [${customIcon != null}] grayscale [${!isNotGrayscaleIcon}]")
|
loggerD(msg = "hook Icon [${findAppName(notifyInstance)}][${notifyInstance.opPkgName}] custom [${customIcon != null}] grayscale [${!isNotGrayscaleIcon}]")
|
||||||
when {
|
when {
|
||||||
/** 如果开启了修复 APP 的彩色图标 */
|
/** 处理自定义通知图标优化 */
|
||||||
customIcon != null && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true) -> it(customIcon!!)
|
customIcon != null -> it(customIcon!!)
|
||||||
/** 若不是灰度图标自动处理为圆角 */
|
/** 若不是灰度图标自动处理为圆角 */
|
||||||
isNotGrayscaleIcon -> it(expandedNf.compatNotifyIcon(context, iconDrawable).toBitmap().round(15.dp(context)))
|
isNotGrayscaleIcon -> it(expandedNf.compatNotifyIcon(context, iconDrawable).toBitmap().round(15.dp(context)))
|
||||||
}
|
}
|
||||||
@@ -257,10 +259,12 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
*/
|
*/
|
||||||
private fun PackageParam.hookNotifyIconOnSet(context: Context, expandedNf: StatusBarNotification?, iconImageView: ImageView) =
|
private fun PackageParam.hookNotifyIconOnSet(context: Context, expandedNf: StatusBarNotification?, iconImageView: ImageView) =
|
||||||
safeRun(msg = "AutoSetAppIconOnSet") {
|
safeRun(msg = "AutoSetAppIconOnSet") {
|
||||||
|
/** 如果没开启修复 APP 的彩色图标 */
|
||||||
|
if (!prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) return@safeRun
|
||||||
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
|
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
|
||||||
expandedNf?.let { notifyInstance ->
|
expandedNf?.let { notifyInstance ->
|
||||||
/** 是否 Hook 彩色通知图标 */
|
/** 是否开启修复 APP 的彩色图标 */
|
||||||
val isHookColorIcon = prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
|
val isNotifyIconFix = prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true)
|
||||||
|
|
||||||
/** 新版风格反色 */
|
/** 新版风格反色 */
|
||||||
val newStyle = if (context.isSystemInDarkMode) 0xFF2D2D2D.toInt() else Color.WHITE
|
val newStyle = if (context.isSystemInDarkMode) 0xFF2D2D2D.toInt() else Color.WHITE
|
||||||
@@ -295,7 +299,7 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
/** 自定义默认小图标颜色 */
|
/** 自定义默认小图标颜色 */
|
||||||
var customIconColor = 0
|
var customIconColor = 0
|
||||||
|
|
||||||
if (isHookColorIcon) run {
|
if (isNotifyIconFix) run {
|
||||||
IconPackParams.iconDatas.forEach {
|
IconPackParams.iconDatas.forEach {
|
||||||
if ((notifyInstance.opPkgName == it.packageName ||
|
if ((notifyInstance.opPkgName == it.packageName ||
|
||||||
findAppName(notifyInstance) == it.appName) &&
|
findAppName(notifyInstance) == it.appName) &&
|
||||||
@@ -309,8 +313,8 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/** 如果开启了修复 APP 的彩色图标 */
|
/** 处理自定义通知图标优化 */
|
||||||
if (customIcon != null && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true))
|
if (customIcon != null)
|
||||||
iconImageView.apply {
|
iconImageView.apply {
|
||||||
/** 设置自定义小图标 */
|
/** 设置自定义小图标 */
|
||||||
setImageBitmap(customIcon)
|
setImageBitmap(customIcon)
|
||||||
@@ -323,36 +327,32 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
else {
|
else {
|
||||||
/** 重新设置图标 - 防止系统更改它 */
|
/** 重新设置图标 - 防止系统更改它 */
|
||||||
iconImageView.setImageDrawable(iconDrawable)
|
iconImageView.setImageDrawable(iconDrawable)
|
||||||
/** 判断是否开启 Hook 彩色图标 */
|
/** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */
|
||||||
if (isHookColorIcon) {
|
if (isGrayscaleIcon) iconImageView.apply {
|
||||||
/** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */
|
/** 设置图标着色 */
|
||||||
if (isGrayscaleIcon) iconImageView.apply {
|
setColorFilter(supportColor)
|
||||||
/** 设置图标着色 */
|
/** Android 12 设置图标外圈颜色 */
|
||||||
setColorFilter(supportColor)
|
if (isUpperOfAndroidS && hasIconColor)
|
||||||
/** Android 12 设置图标外圈颜色 */
|
background = DrawableBuilder().rounded().solidColor(iconColor).build()
|
||||||
if (isUpperOfAndroidS && hasIconColor)
|
} else iconImageView.apply {
|
||||||
background = DrawableBuilder().rounded().solidColor(iconColor).build()
|
/** 重新设置图标 */
|
||||||
} else iconImageView.apply {
|
setImageDrawable(expandedNf.compatNotifyIcon(context, iconDrawable))
|
||||||
/** 重新设置图标 */
|
/** 设置裁切到边界 */
|
||||||
setImageDrawable(expandedNf.compatNotifyIcon(context, iconDrawable))
|
clipToOutline = true
|
||||||
/** 设置裁切到边界 */
|
/** 设置一个圆角轮廓裁切 */
|
||||||
clipToOutline = true
|
outlineProvider = object : ViewOutlineProvider() {
|
||||||
/** 设置一个圆角轮廓裁切 */
|
override fun getOutline(view: View, out: Outline) {
|
||||||
outlineProvider = object : ViewOutlineProvider() {
|
out.setRoundRect(
|
||||||
override fun getOutline(view: View, out: Outline) {
|
0, 0,
|
||||||
out.setRoundRect(
|
view.width, view.height, 5.dp(context)
|
||||||
0, 0,
|
)
|
||||||
view.width, view.height, 5.dp(context)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/** 清除原生的背景边距设置 */
|
|
||||||
if (isUpperOfAndroidS) setPadding(0, 0, 0, 0)
|
|
||||||
/** 清除原生的主题色背景圆圈颜色 */
|
|
||||||
if (isUpperOfAndroidS) background = null
|
|
||||||
}
|
}
|
||||||
/** 否则一律设置灰度图标 */
|
/** 清除原生的背景边距设置 */
|
||||||
} else iconImageView.setColorFilter(supportColor)
|
if (isUpperOfAndroidS) setPadding(0, 0, 0, 0)
|
||||||
|
/** 清除原生的主题色背景圆圈颜色 */
|
||||||
|
if (isUpperOfAndroidS) background = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -377,26 +377,25 @@ class HookEntry : YukiHookXposedInitProxy {
|
|||||||
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable)
|
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable)
|
||||||
|
|
||||||
/** 获取目标修复彩色图标的 APP */
|
/** 获取目标修复彩色图标的 APP */
|
||||||
var isTargetApp = false
|
var isTargetFixApp = false
|
||||||
run {
|
/** 如果开启了自定义通知图标优化 */
|
||||||
IconPackParams.iconDatas.forEach {
|
if (prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true))
|
||||||
if ((notifyInstance.opPkgName == it.packageName ||
|
run {
|
||||||
findAppName(notifyInstance) == it.appName) &&
|
IconPackParams.iconDatas.forEach {
|
||||||
isAppNotifyHookOf(it)
|
if ((notifyInstance.opPkgName == it.packageName ||
|
||||||
) {
|
findAppName(notifyInstance) == it.appName) &&
|
||||||
if (isNotGrayscaleIcon || isAppNotifyHookAllOf(it)) isTargetApp = true
|
isAppNotifyHookOf(it)
|
||||||
return@run
|
) {
|
||||||
|
if (isNotGrayscaleIcon || isAppNotifyHookAllOf(it)) isTargetFixApp = true
|
||||||
|
return@run
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 如果开启了修复 APP 的彩色图标
|
|
||||||
* 只要不是灰度就返回彩色图标
|
* 只要不是灰度就返回彩色图标
|
||||||
* 否则不对颜色进行反色处理防止一些系统图标出现异常
|
* 否则不对颜色进行反色处理防止一些系统图标出现异常
|
||||||
*/
|
*/
|
||||||
if (isTargetApp && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true))
|
if (isTargetFixApp) false else isNotGrayscaleIcon
|
||||||
false
|
|
||||||
else isNotGrayscaleIcon
|
|
||||||
} ?: true
|
} ?: true
|
||||||
} else false
|
} else false
|
||||||
|
|
||||||
|
@@ -41,7 +41,7 @@ import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_HOOK
|
|||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_HIDE_ICON
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_HIDE_ICON
|
||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE
|
||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG
|
||||||
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_HOOK
|
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_FIX
|
||||||
import com.fankes.miui.notify.ui.base.BaseActivity
|
import com.fankes.miui.notify.ui.base.BaseActivity
|
||||||
import com.fankes.miui.notify.utils.*
|
import com.fankes.miui.notify.utils.*
|
||||||
import com.highcapable.yukihookapi.hook.factory.modulePrefs
|
import com.highcapable.yukihookapi.hook.factory.modulePrefs
|
||||||
@@ -114,7 +114,7 @@ class MainActivity : BaseActivity() {
|
|||||||
val notifyIconConfigItem = findViewById<View>(R.id.config_item_notify)
|
val notifyIconConfigItem = findViewById<View>(R.id.config_item_notify)
|
||||||
val hideIconInLauncherSwitch = findViewById<SwitchCompat>(R.id.hide_icon_in_launcher_switch)
|
val hideIconInLauncherSwitch = findViewById<SwitchCompat>(R.id.hide_icon_in_launcher_switch)
|
||||||
val colorIconHookSwitch = findViewById<SwitchCompat>(R.id.color_icon_fix_switch)
|
val colorIconHookSwitch = findViewById<SwitchCompat>(R.id.color_icon_fix_switch)
|
||||||
val notifyIconHookSwitch = findViewById<SwitchCompat>(R.id.notify_icon_fix_switch)
|
val notifyIconFixSwitch = findViewById<SwitchCompat>(R.id.notify_icon_fix_switch)
|
||||||
/** 获取 Sp 存储的信息 */
|
/** 获取 Sp 存储的信息 */
|
||||||
notifyIconConfigItem.isVisible = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
|
notifyIconConfigItem.isVisible = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
|
||||||
moduleEnableLogSwitch.isVisible = modulePrefs.getBoolean(ENABLE_MODULE, default = true)
|
moduleEnableLogSwitch.isVisible = modulePrefs.getBoolean(ENABLE_MODULE, default = true)
|
||||||
@@ -122,7 +122,7 @@ class MainActivity : BaseActivity() {
|
|||||||
moduleEnableLogSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE_LOG, default = false)
|
moduleEnableLogSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE_LOG, default = false)
|
||||||
hideIconInLauncherSwitch.isChecked = modulePrefs.getBoolean(ENABLE_HIDE_ICON)
|
hideIconInLauncherSwitch.isChecked = modulePrefs.getBoolean(ENABLE_HIDE_ICON)
|
||||||
colorIconHookSwitch.isChecked = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
|
colorIconHookSwitch.isChecked = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
|
||||||
notifyIconHookSwitch.isChecked = modulePrefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true)
|
notifyIconFixSwitch.isChecked = modulePrefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true)
|
||||||
moduleEnableSwitch.setOnCheckedChangeListener { btn, b ->
|
moduleEnableSwitch.setOnCheckedChangeListener { btn, b ->
|
||||||
if (!btn.isPressed) return@setOnCheckedChangeListener
|
if (!btn.isPressed) return@setOnCheckedChangeListener
|
||||||
modulePrefs.putBoolean(ENABLE_MODULE, b)
|
modulePrefs.putBoolean(ENABLE_MODULE, b)
|
||||||
@@ -149,9 +149,9 @@ class MainActivity : BaseActivity() {
|
|||||||
notifyIconConfigItem.isVisible = b
|
notifyIconConfigItem.isVisible = b
|
||||||
SystemUITool.showNeedRestartSnake(context = this)
|
SystemUITool.showNeedRestartSnake(context = this)
|
||||||
}
|
}
|
||||||
notifyIconHookSwitch.setOnCheckedChangeListener { btn, b ->
|
notifyIconFixSwitch.setOnCheckedChangeListener { btn, b ->
|
||||||
if (!btn.isPressed) return@setOnCheckedChangeListener
|
if (!btn.isPressed) return@setOnCheckedChangeListener
|
||||||
modulePrefs.putBoolean(ENABLE_NOTIFY_ICON_HOOK, b)
|
modulePrefs.putBoolean(ENABLE_NOTIFY_ICON_FIX, b)
|
||||||
SystemUITool.showNeedRestartSnake(context = this)
|
SystemUITool.showNeedRestartSnake(context = this)
|
||||||
}
|
}
|
||||||
/** 重启按钮点击事件 */
|
/** 重启按钮点击事件 */
|
||||||
|
Reference in New Issue
Block a user