案例1:看看下面的代碼。我能夠獲得類和方法對象,它運作良好。我試圖訪問的方法是android.view.View :: dispatchPointerEvent。Android反射 - Android罐子
案例2:當我用com.android.server.pm.PackageManagerService :: grantPermissionsLPw替換class/Method時,我得到NoMethodFoundException。班雖然可以訪問。
案例3:當我用android.hardware.input.InputManager :: injectInputEvent替換class/Method時,我得到NoMethodFoundException。班雖然可以訪問。
問題是:爲什麼一些android類/方法可以通過反射和其他一些不可用?
Class _class = null;
try {
_class = Class.forName("android.view.View");
Log.i("Test", "Class found");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method method = null;
try {
Log.i("Test", "Pre-Method found");
method = _class.getDeclaredMethod("dispatchPointerEvent",
MotionEvent.class);
Log.i("Test", "Method found");
} catch (Exception e) {
Log.i("Test","I failed."+e.getMessage()+e.toString());
//e.printStackTrace();
}
是的,我沒有更換參數合適,也可通過SetAccessible真正照顧了私有方法對其他做題所示.. – Jailbroken
你內部的應用程序或仿真器執行或只調用一個IDE項目?如果你不在模擬器中,我想你是在調用一個存根,沒有什麼可做的。 –
我直接在設備上執行.. – Jailbroken