2016-03-20 26 views
0

İç içe geçmiş bir sınıfın yapıcısını Xposed kullanarak kancalamaya çalışıyorum, ancak yuvalanmış sınıf (SettingsAdapter) için ClassNotFoundException alıyorum. Bununla birlikte, yuvalanmış sınıfta çengel bozukluğu olmadığı başka bir yöntem vardır. Kurucu ile yaptığım yanlış bir şey var mı?Yuvalanmış Sınıfta Xposed Kanca Oluşturucu

Bu yapıcı çağrıdır:

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

Ve bu diğer çalışma yöntemi çağrısıdır: önceden

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

teşekkürler!

+0

iç içe geçmiş sınıf statik mi? Ayrıca: Lütfen sorunuzdaki kod bölümlerini biçimlendirin. – F43nd1r

+0

Hayır, iç içe geçmiş sınıf bildirimi 'özel son sınıf' olan SettingsAdapter ArrayAdapter öğesini genişletiyor {' – Erin

+0

@ F43nd1r Bunu tekrar denemekten özür dilerim, ancak iç içe geçmiş sınıf statik ise ne olur? Şimdi bu konuya farklı bir kanca ile koşuyorum. – Erin

cevap

0

İç sınıflar, süper örneği tutan örtülü bir parametreye sahiptir. Durumunuzda bu, ActivityAlarmSettings referansı olacaktır.

Sen

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

deneyebilir ya da sadece arada hookAllConstructors

kullanın: findAndHookConstructor için çağrı yapıcı adını içerecek şekilde görünüyor. Bu beklenen bir parametre değil! Oluşturucu adları her zaman sınıf adıdır ve xposed bunu iletmenizi beklemez.

+0

Kurucu adını kaldırma ve süper örneği ekleyerek mükemmel bir şekilde çalıştı. Çok teşekkür ederim! – Erin