2015-11-17 1 views
2

Я пытаюсь подключить к этому методу в NotificationManagerService с помощью Экспоузда:Как подключить метод с помощью int [] с помощью xposed?

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... 
}); 

Однако это дает мне сообщение об ошибке в журнале Экспоузды, что метод не найден. Вероятно, это связано с int[] idOut, потому что я не уверен, что такое класс этого типа этого параметра. По-видимому, не Integer.class, или это что-то еще не так?

+0

Похоже, вы пытаетесь сопоставить «final int callUid» с Integer.class, что неверно. Вы можете использовать Integer.TYPE или int.class для примитивов int. – Jamie

+0

Для idOut вы можете сделать: Class.forName («[I»), или вы могли бы сделать «new int [0] .getClass()» – Jamie

+0

ОК, спасибо. Я попробую его после школы :) –

ответ

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... 
}); 
2

То, что сработало для меня было:

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 
    }); 
0

Вы можете просто использовать:

int[].class 

другие ответы работает, но неправильно.

Смежные вопросы