2

我正在尝试使用 Xposed 在 NotificationManagerService 中挂钩此方法:

void enqueueNotificationInternal(final String pkg, final String opPkg, final int callingUid,
            final int callingPid, final String tag, final int id, final Notification notification,
            int[] idOut, int incomingUserId)

为此,我正在使用这个钩子:

XposedHelpers.findAndHookMethod("com.android.server.notification.NotificationManagerService", loadPackageParam.classLoader,
                "enqueueNotificationInternal", String.class, String.class, Integer.class, Integer.class, String.class,
                Integer.class, Notification.class, Integer.class, Integer.class, new XC_MethodHook(){
//More code...
});

但是,这在 Xposed 日志中给了我一个错误,即找不到该方法。这可能是因为int[] idOut,因为我不确定该参数的“类型”的类是什么。显然不是Integer.class,或者是不是还有其他问题?

4

3 回答 3

3

对我有用的是声明一个空数组变量并获取它的类:

int[] data = new int[0];

XposedHelpers.findAndHookMethod("com.class", 
    loadPackageParam.classLoader, 
    "methodName", 
    String.class, 
    data.getClass(), 
    new XC_MethodHook(){
        // code
    });

另一个可能的答案:

XposedHelpers.findAndHookMethod("com.class", 
    loadPackageParam.classLoader, 
    "methodName", 
    String.class, 
    int[].class, 
    new XC_MethodHook(){
        // code
    });
于 2016-07-09T17:20:34.333 回答
1

这有效:

XposedHelpers.findAndHookMethod("com.android.server.notification.NotificationManagerService", loadPackageParam.classLoader, "enqueueNotificationInternal", String.class, String.class, int.class, int.class, String.class, int.class, Notification.class, new int[0].class, int.class, new XC_MethodHook(){
//More code...
});
于 2015-11-19T16:01:40.347 回答
1

您可以简单地使用:

 int[].class

其他答案有效,但方法错误。

于 2017-02-14T16:44:13.643 回答