2016-09-23 7 views
0

вот мой код ... не могу понять, как должен быть возвращаемый тип написанКак я могу подключиться, если тип возврата - это список <string> в xposed?

if (lpparam.packageName.equals("com.demo.data")) { 
     XposedBridge.log("we are in Module!");  

     findAndHookMethod("com.demo.data.utils.Utils", lpparam.classLoader, "getListFromJsonArrayString", List<String>,new XC_MethodHook() { 
      @Override 
      protected void afterHookedMethod(MethodHookParam param) throws Throwable { 
       XposedBridge.log("we are in method!"); 
       log("call -> " + (String) param.getResult()); 
      } 
     }); 
    } 


List<String> or List<String.class> is not working 

Метод, который я пытаюсь зацепить оказывает тип возвращаемого

List<string> getListFromJsonArrayString() 

ответ

0

Первая проблема :

findAndHookMethod(..., "getListFromJsonArrayString", List<String>, new XC_MethodHook() { 

Тип списка здесь для параметров типов. У вас не должно быть типа возврата здесь (не говоря уже о том, что это недопустимый Java, вы, вероятно, имели значение List.class). Правильная форма должна быть:

findAndHookMethod(..., "getListFromJsonArrayString", new XC_MethodHook() { 

Это однозначно, так как вы не можете иметь два метода Java с тем же именем и списком параметров типа с различными типами возврата.

Вторая проблема:

log("call -> " + (String) param.getResult()); 

Возвращаемый тип является List<String>. Вы бросаете его на String, который, очевидно, не будет работать. Правильная форма:

log("call -> " + (List<String>) param.getResult()); 

Обратите внимание, что это покажет непроверенное предупреждение произнесения, но так как вы точно знаете, что общий тип, вы можете его игнорировать.

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

  • Нет связанных вопросов^_^