mirror of
https://github.com/fankes/ColorOSNotifyIcon.git
synced 2025-09-08 19:44:10 +08:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
1f2b1d5046 | |||
7896e4836c | |||
d2ff1fe3ec |
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://github.com/fankes/ColorOSNotifyIcon)
|
[](https://github.com/fankes/ColorOSNotifyIcon)
|
||||||
[](https://github.com/fankes/ColorOSNotifyIcon/blob/master/LICENSE)
|
[](https://github.com/fankes/ColorOSNotifyIcon/blob/master/LICENSE)
|
||||||
[](https://github.com/fankes/ColorOSNotifyIcon/releases)
|
[](https://github.com/fankes/ColorOSNotifyIcon/releases)
|
||||||
[](https://github.com/fankes/ColorOSNotifyIcon/releases)
|
[](https://github.com/fankes/ColorOSNotifyIcon/releases)
|
||||||
[](https://github.com/Xposed-Modules-Repo/com.fankes.coloros.notify/releases)
|
[](https://github.com/Xposed-Modules-Repo/com.fankes.coloros.notify/releases)
|
||||||
[](https://t.me/XiaofangInternet)
|
[](https://t.me/XiaofangInternet)
|
||||||
|
@@ -72,8 +72,8 @@ tasks.whenTaskAdded {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'de.robv.android.xposed:api:82'
|
compileOnly 'de.robv.android.xposed:api:82'
|
||||||
implementation 'com.highcapable.yukihookapi:api:1.0.70'
|
implementation 'com.highcapable.yukihookapi:api:1.0.71'
|
||||||
ksp 'com.highcapable.yukihookapi:ksp-xposed:1.0.70'
|
ksp 'com.highcapable.yukihookapi:ksp-xposed:1.0.71'
|
||||||
implementation 'com.github.tiann:FreeReflection:3.1.0'
|
implementation 'com.github.tiann:FreeReflection:3.1.0'
|
||||||
implementation "com.github.topjohnwu.libsu:core:3.1.2"
|
implementation "com.github.topjohnwu.libsu:core:3.1.2"
|
||||||
implementation 'androidx.annotation:annotation:1.3.0'
|
implementation 'androidx.annotation:annotation:1.3.0'
|
||||||
|
@@ -41,7 +41,7 @@ object Const {
|
|||||||
const val MODULE_VERSION_CODE = BuildConfig.VERSION_CODE
|
const val MODULE_VERSION_CODE = BuildConfig.VERSION_CODE
|
||||||
|
|
||||||
/** 当前模块的版本校验 */
|
/** 当前模块的版本校验 */
|
||||||
const val MODULE_VERSION_VERIFY = "${MODULE_VERSION_NAME}_${MODULE_VERSION_CODE}_202204041448"
|
const val MODULE_VERSION_VERIFY = "${MODULE_VERSION_NAME}_${MODULE_VERSION_CODE}_202204042319"
|
||||||
|
|
||||||
/** 当前模块的版本校验标签 */
|
/** 当前模块的版本校验标签 */
|
||||||
const val MODULE_VERSION_VERIFY_TAG = "module_version_verify"
|
const val MODULE_VERSION_VERIFY_TAG = "module_version_verify"
|
||||||
|
@@ -104,13 +104,14 @@ class SystemUIHooker : YukiBaseHooker() {
|
|||||||
/** 根据多个版本存在不同的包名相同的类 */
|
/** 根据多个版本存在不同的包名相同的类 */
|
||||||
private val OplusNotificationIconAreaControllerClass = VariousClass(
|
private val OplusNotificationIconAreaControllerClass = VariousClass(
|
||||||
"com.oplusos.systemui.statusbar.phone.OplusNotificationIconAreaController",
|
"com.oplusos.systemui.statusbar.phone.OplusNotificationIconAreaController",
|
||||||
"com.coloros.systemui.statusbar.phone.ColorosNotificationIconAreaController"
|
"com.oplusos.systemui.statusbar.policy.OplusNotificationIconAreaController",
|
||||||
|
"com.coloros.systemui.statusbar.policy.ColorNotificationIconAreaController"
|
||||||
)
|
)
|
||||||
|
|
||||||
/** 根据多个版本存在不同的包名相同的类 */
|
/** 根据多个版本存在不同的包名相同的类 */
|
||||||
private val SystemPromptControllerClass = VariousClass(
|
private val SystemPromptControllerClass = VariousClass(
|
||||||
"com.oplusos.systemui.statusbar.policy.SystemPromptController",
|
"com.oplusos.systemui.statusbar.policy.SystemPromptController",
|
||||||
"com.coloros.systemui.statusbar.policy.SystemPromptController"
|
"com.coloros.systemui.statusbar.policy.ColorSystemPromptController"
|
||||||
)
|
)
|
||||||
|
|
||||||
/** 根据多个版本存在不同的包名相同的类 */
|
/** 根据多个版本存在不同的包名相同的类 */
|
||||||
@@ -171,6 +172,9 @@ class SystemUIHooker : YukiBaseHooker() {
|
|||||||
/** 状态栏通知图标容器 */
|
/** 状态栏通知图标容器 */
|
||||||
private var notificationIconContainer: ViewGroup? = null
|
private var notificationIconContainer: ViewGroup? = null
|
||||||
|
|
||||||
|
/** 状态栏通知图标数组 */
|
||||||
|
private var notificationIconInstances = ArrayList<View>()
|
||||||
|
|
||||||
/** 缓存的通知小图标包装纸实例 */
|
/** 缓存的通知小图标包装纸实例 */
|
||||||
private var notificationViewWrappers = ArraySet<Any>()
|
private var notificationViewWrappers = ArraySet<Any>()
|
||||||
|
|
||||||
@@ -300,7 +304,7 @@ class SystemUIHooker : YukiBaseHooker() {
|
|||||||
.get(RoundRectDrawableUtilClass.clazz.field { name = "Companion" }.get().self)
|
.get(RoundRectDrawableUtilClass.clazz.field { name = "Companion" }.get().self)
|
||||||
/** 启动一个线程防止卡顿 */
|
/** 启动一个线程防止卡顿 */
|
||||||
Thread {
|
Thread {
|
||||||
notificationIconContainer?.children?.forEach {
|
(notificationIconContainer?.children?.toList() ?: notificationIconInstances.takeIf { it.isNotEmpty() })?.forEach {
|
||||||
runInSafe {
|
runInSafe {
|
||||||
/** 得到通知实例 */
|
/** 得到通知实例 */
|
||||||
val nf = nfField.get(it).cast<StatusBarNotification>() ?: return@Thread
|
val nf = nfField.get(it).cast<StatusBarNotification>() ?: return@Thread
|
||||||
@@ -628,11 +632,23 @@ class SystemUIHooker : YukiBaseHooker() {
|
|||||||
/** 注入状态栏通知图标容器实例 */
|
/** 注入状态栏通知图标容器实例 */
|
||||||
OplusNotificationIconAreaControllerClass.hook {
|
OplusNotificationIconAreaControllerClass.hook {
|
||||||
injectMember {
|
injectMember {
|
||||||
|
var isOldWay = false
|
||||||
method {
|
method {
|
||||||
name = "updateIconsForLayout"
|
name = "updateIconsForLayout"
|
||||||
paramCount = 10
|
paramCount = 10
|
||||||
|
}.remedys {
|
||||||
|
method {
|
||||||
|
name = "updateIconsForLayout"
|
||||||
|
paramCount = 1
|
||||||
|
}.onFind { isOldWay = true }
|
||||||
|
}
|
||||||
|
afterHook {
|
||||||
|
if (isOldWay) {
|
||||||
|
notificationIconInstances.clear()
|
||||||
|
field { name = "mLastToShow" }.get(instance).list<View>()
|
||||||
|
.takeIf { it.isNotEmpty() }?.forEach { notificationIconInstances.add(it) }
|
||||||
|
} else notificationIconContainer = args(index = 1).cast()
|
||||||
}
|
}
|
||||||
afterHook { notificationIconContainer = args(index = 1).cast() }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/** 替换通知图标和样式 */
|
/** 替换通知图标和样式 */
|
||||||
|
@@ -5,8 +5,8 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
appVersionName = "1.52"
|
appVersionName = "1.53"
|
||||||
appVersionCode = 9
|
appVersionCode = 10
|
||||||
}
|
}
|
||||||
|
|
||||||
task clean(type: Delete) {
|
task clean(type: Delete) {
|
||||||
|
Reference in New Issue
Block a user