2016-03-20 124 views
0

我想使用Xposed鉤住嵌套類的構造函數,但是我得到了嵌套類(SettingsAdapter)的ClassNotFoundException。但是,在嵌套類中還有另一種方法,它沒有任何困難。我在構造函數調用中做了什麼錯誤?嵌套類中的Xposed Hook構造函數

這是構造函數調用:

findAndHookConstructor("com.angrydoughnuts.android.alarmclock.ActivityAlarmSettings$SettingsAdapter", lpparam.classLoader, "SettingsAdapter", "android.content.Context", "java.util.List", new XC_MethodHook() { 

而這是其他工作方法的調用:提前

findAndHookMethod("com.angrydoughnuts.android.alarmclock.ActivityAlarmSettings$SettingsAdapter", lpparam.classLoader, "getView", "int", "android.view.View", "android.view.ViewGroup", new XC_MethodHook() { 

謝謝!

+0

是嵌套類的靜態?另外:請在您的問題中格式化代碼部分。 – F43nd1r

+0

不,嵌套類聲明是'private final class SettingsAdapter extends ArrayAdapter {' – Erin

+0

@ F43nd1r對不起,再次挖掘它,但如果嵌套類是靜態的,會發生什麼?現在我用一個不同的鉤子來解決這個問題。 – Erin

回答

0

內部類有一個隱式參數,它保存超級實例。在你的情況下,這將是對ActivityAlarmSettings的參考。

你可以試着

findAndHookConstructor("com.angrydoughnuts.android.alarmclock.ActivityAlarmSettings$SettingsAdapter", lpparam.classLoader, "com.angrydoughnuts.android.alarmclock.ActivityAlarmSettings", "android.content.Context", "java.util.List", new XC_MethodHook() { 

或只使用hookAllConstructors

順便說一句:你到findAndHookConstructor通話似乎包括構造函數的名稱。這不是預期的參數!構造函數名稱始終是類名稱,並且xposed不指望您傳遞它。

+0

刪除構造函數名稱並添加超級實例完美運行。非常感謝你! – Erin