【问题标题】:Xposed call private method not workingXposed调用私有方法不起作用
【发布时间】:2016-09-02 13:02:43
【问题描述】:

我试图在抽象类中调用私有方法。我用过:

XposedHelpers.findAndHookMethod("com.kabouzeid.gramophone.ui.activities.tageditor.AbsTagEditorActivity", lpparam.classLoader, "getTrackNumber",String.class, new XC_MethodHook(){
             @Override
             protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                 Object obj1= XposedHelpers.callMethod(param.thisObject,"getAudioFile","test");
             }
        });

方法getAudioFilegetTrackNumber在抽象类AbsTagEditorActivity中声明

它返回NoSuchMethodError:com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity#getAudioFile(java.lang.String)#bestmatch

SongTagEditorActivity 类扩展 AbsTagEditorActivity

但是如果我尝试用

钩住方法getAudioFile
XposedHelpers.findAndHookMethod("com.kabouzeid.gramophone.ui.activities.tageditor.AbsTagEditorActivity", lpparam.classLoader, "getAudioFile",String.class, new XC_MethodHook() 
        {
            @Override
            protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable
            {
                XposedBridge.log("test:"+param.args[0]);
            }
        });

有效

方法应该是这样的:

  @NonNull
  private AudioFile getAudioFile(@NonNull String paramString)
  {
      try
      {
          AudioFile localAudioFile = AudioFileIO.read(new File(paramString));
          return localAudioFile;
      } catch (Exception localException){}
      return new AudioFile();
  }

我做错了什么?

提前致谢

【问题讨论】:

    标签: hook private-methods xposed


    【解决方案1】:

    您不能通过 Xposed 挂钩抽象方法。如果要挂钩抽象方法,则需要挂钩扩展该抽象类的类中的方法。与接口相同的情况。您需要在实现该接口的类中挂钩方法。 此外,如果您想调用私有方法,则需要将其设置为可通过反射访问。只需谷歌如何做到这一点。

    【讨论】:

      【解决方案2】:

      快速浏览一下 Xposed Helpers,可能是因为您尝试调用该方法的对象是一个子类,而 XposedHelpers.callMethod 似乎不允许 invoking private methods from superclasses

      尝试在挂钩“getTrackNumber”时记录“this”对象类名称,您可以尝试使用反射自己调用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 2018-12-07
        • 1970-01-01
        • 2018-05-03
        • 2014-04-21
        相关资源
        最近更新 更多