From b5a0c2505db350eed081192e845c478e618c42e2 Mon Sep 17 00:00:00 2001 From: kooritea Date: Fri, 12 Apr 2024 22:29:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=89=E5=8D=9314=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=89=88=E6=9C=AC=E9=98=BB=E6=AD=A2=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E6=97=B6=E8=87=AA=E5=8A=A8=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E9=81=97=E5=8A=9F=E8=83=BD=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fcmfix/xposed/KeepNotification.java | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kooritea/fcmfix/xposed/KeepNotification.java b/app/src/main/java/com/kooritea/fcmfix/xposed/KeepNotification.java index 4730cce..e5eb7f1 100644 --- a/app/src/main/java/com/kooritea/fcmfix/xposed/KeepNotification.java +++ b/app/src/main/java/com/kooritea/fcmfix/xposed/KeepNotification.java @@ -1,5 +1,6 @@ package com.kooritea.fcmfix.xposed; +import android.os.Build; import java.lang.reflect.Method; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; @@ -33,12 +34,46 @@ protected void startHook() throws NoSuchMethodError, XposedHelpers.ClassNotFound } } if(targetMethod != null){ - int pkg_args_index = 2; - int reason_args_index = 8; + int pkg_args_index = 0; + int reason_args_index = 0; + if(Build.VERSION.SDK_INT == 30){ + pkg_args_index = 2; + reason_args_index = 8; + } + if(Build.VERSION.SDK_INT == 31){ + pkg_args_index = 2; + reason_args_index = 8; + } + if(Build.VERSION.SDK_INT == 32){ + pkg_args_index = 2; + reason_args_index = 8; + } + if(Build.VERSION.SDK_INT == 33){ + pkg_args_index = 2; + reason_args_index = 8; + } + if(Build.VERSION.SDK_INT == 34){ + if(targetMethod.getParameterTypes().length == 10){ + pkg_args_index = 2; + reason_args_index = 8; + }else if(targetMethod.getParameterTypes().length == 8){ + pkg_args_index = 2; + reason_args_index = 7; + } + } + if(Build.VERSION.SDK_INT > 34){ + pkg_args_index = 2; + reason_args_index = 7; + } + if(pkg_args_index == 0 || reason_args_index == 0){ + throw new NoSuchMethodError(); + } + int finalPkg_args_index = pkg_args_index; + int finalReason_args_index = reason_args_index; XposedBridge.hookMethod(targetMethod,new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) { - if(isDisableAutoCleanNotification() && targetIsAllow((String) param.args[pkg_args_index]) && (int)param.args[reason_args_index] == 5){ + if(isDisableAutoCleanNotification() && targetIsAllow((String) param.args[finalPkg_args_index]) && (int)param.args[finalReason_args_index] == 5){ param.setResult(null); } }