2016-03-20 16 views
0

Xposedを使用してネストされたクラスのコンストラクタをフックしようとしていますが、ネストされたクラス(SettingsAdapter)に対してClassNotFoundExceptionが発生しています。しかし、ネストされたクラスには別のメソッドがあり、問題のフッキングはありません。コンストラクタコールで何かしている間違ったことはありますか?ネストされたクラスのXooked 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

関連する問題