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 に答える