【发布时间】: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");
}
});
方法getAudioFile和getTrackNumber在抽象类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