diff --git a/app/build.gradle b/app/build.gradle index b98b7e9..de52438 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,8 +64,8 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' compileOnly 'de.robv.android.xposed:api:82' - implementation 'com.highcapable.yukihookapi:api:1.0.1' - ksp 'com.highcapable.yukihookapi:ksp-xposed:1.0.1' + implementation 'com.highcapable.yukihookapi:api:1.0.2' + ksp 'com.highcapable.yukihookapi:ksp-xposed:1.0.2' implementation 'com.geyifeng.immersionbar:immersionbar:3.2.0' implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.0' implementation 'androidx.core:core-ktx:1.7.0' diff --git a/app/src/main/java/com/fankes/miui/notify/hook/HookEntry.kt b/app/src/main/java/com/fankes/miui/notify/hook/HookEntry.kt index 92ff289..f5e960e 100644 --- a/app/src/main/java/com/fankes/miui/notify/hook/HookEntry.kt +++ b/app/src/main/java/com/fankes/miui/notify/hook/HookEntry.kt @@ -108,8 +108,13 @@ class HookEntry : YukiHookXposedInitProxy { */ private fun PackageParam.isGrayscaleIcon(context: Context, drawable: Drawable) = safeOfFalse { ContrastColorUtilClass.clazz.let { - it.method(name = "isGrayscaleIcon", DrawableClass) - ?.call(it.method(name = "getInstance", ContextClass)?.callStatic(context), drawable) ?: false + it.method { + name = "isGrayscaleIcon" + param(DrawableClass) + }.get(it.method { + name = "getInstance" + param(ContextClass) + }.get().invoke(context)).invoke(drawable) ?: false } } @@ -118,7 +123,7 @@ class HookEntry : YukiHookXposedInitProxy { * @return [Boolean] */ private fun PackageParam.isShowMiuiStyle() = safeOfFalse { - NotificationUtilClass.clazz.method(name = "showMiuiStyle")?.callStatic() ?: false + NotificationUtilClass.clazz.method { name = "showMiuiStyle" }.get().invoke() ?: false } /** @@ -137,7 +142,7 @@ class HookEntry : YukiHookXposedInitProxy { * @return [String] */ private fun PackageParam.findAppName(instance: Any?) = safeOf(default = "") { - ExpandedNotificationClass.clazz.method(name = "getAppName")?.call(instance) ?: "" + ExpandedNotificationClass.clazz.method { name = "getAppName" }.get(instance).invoke() ?: "" } /** @@ -197,7 +202,9 @@ class HookEntry : YukiHookXposedInitProxy { */ private val PackageParam.globalContext get() = safeOfNull { - SystemUIApplicationClass.clazz.method(name = "getContext")?.callStatic() + if (SystemUIApplicationClass.clazz.hasMethod(name = "getContext")) + SystemUIApplicationClass.clazz.method { name = "getContext" }.get().invoke() + else null } /** @@ -471,7 +478,7 @@ class HookEntry : YukiHookXposedInitProxy { } } } - findClass(StatusBarIconViewClass).hook { + StatusBarIconViewClass.hook { /** 修复通知图标为彩色 - MIPUSH 修复 */ injectMember { method { name = "updateIconColor" } @@ -499,7 +506,7 @@ class HookEntry : YukiHookXposedInitProxy { } } if (NotificationHeaderViewWrapperInjectorClass.hasClass) - findClass(NotificationHeaderViewWrapperInjectorClass).hook { + NotificationHeaderViewWrapperInjectorClass.hook { /** 修复下拉通知图标自动设置回 APP 图标的方法 */ injectMember { var isUseLegacy = false @@ -539,7 +546,7 @@ class HookEntry : YukiHookXposedInitProxy { } } else - findClass(NotificationHeaderViewWrapperClass).hook { + NotificationHeaderViewWrapperClass.hook { /** 之前的版本解决方案 */ injectMember { method { name = "handleHeaderViews" } @@ -547,19 +554,16 @@ class HookEntry : YukiHookXposedInitProxy { /** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */ if (!hasIgnoreStatusBarIconColor() && isShowMiuiStyle()) return@afterHook /** 获取小图标 */ - val iconImageView = field { - classSet = NotificationHeaderViewWrapperClass.clazz - name = "mIcon" - }.of(instance) ?: return@afterHook + val iconImageView = + NotificationHeaderViewWrapperClass.clazz + .field { name = "mIcon" }.of(instance) ?: return@afterHook /** 从父类中得到 mRow 变量 - [ExpandableNotificationRowClass] */ - field { - classSet = NotificationViewWrapperClass.clazz - name = "mRow" - }.get(instance).apply { + NotificationViewWrapperClass.clazz.field { name = "mRow" }.get(instance).apply { /** 获取其中的得到通知方法 */ val expandedNf = - ExpandableNotificationRowClass.clazz.method(name = "getStatusBarNotification") - ?.call(instance = self) + ExpandableNotificationRowClass.clazz + .method { name = "getStatusBarNotification" } + .get(self).invoke() /** 执行 Hook */ hookNotifyIconOnSet(iconImageView.context, expandedNf, iconImageView) } diff --git a/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt b/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt index 1926e18..aa4811b 100644 --- a/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt +++ b/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt @@ -37,7 +37,6 @@ import android.util.Base64 import android.widget.Toast import com.fankes.miui.notify.application.MNNApplication.Companion.appContext import com.google.android.material.snackbar.Snackbar -import com.highcapable.yukihookapi.hook.factory.callStatic import com.highcapable.yukihookapi.hook.factory.classOf import com.highcapable.yukihookapi.hook.factory.hasClass import com.highcapable.yukihookapi.hook.factory.method @@ -241,9 +240,10 @@ fun Bitmap.round(radius: Float): Bitmap = * @return [String] */ fun findPropString(key: String, default: String = "") = safeOf(default) { - (classOf(name = "android.os.SystemProperties").method( - name = "get", StringType, StringType - )?.callStatic(key, default)) ?: default + (classOf(name = "android.os.SystemProperties").method { + name = "get" + param(StringType, StringType) + }.get().invoke(key, default)) ?: default } /** diff --git a/settings.gradle b/settings.gradle index ac7af30..be8f756 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,7 +10,8 @@ dependencyResolutionManagement { repositories { google() maven { url "https://api.xposed.info/" } - maven { url 'https://www.jitpack.io' } + maven { url "https://www.jitpack.io" } + maven { url "https://s01.oss.sonatype.org/content/repositories/releases" } mavenCentral() } }