1
Здесь я хочу вызвать метод android.view.View :: dispatchPointerEvent. Когда я делаю это, я получаю следующее исключение:Android Reflection - вызов метода
java.lang.IllegalArgumentException: expected receiver of type android.view.View, but got java.lang.Class<android.view.View>
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.infostretch.automateme.Main.injectMyCrap(Main.java:75)
at com.infostretch.automateme.MainActivity$1.onClick(MainActivity.java:33)
at android.view.View.performClick(View.java:4202)
at android.view.View$PerformClick.run(View.java:17340)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at com.android.internal.os.ZygoteInit.main(Native Method)
at dalvik.system.NativeStart.main(Native Method)
Вот код
static void injectMyCrap() {
Log.i("JSLock-injectMyCrap","I got called");
Class _class = null;
try {
_class = Class.forName("android.view.View");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method method = null;
try {
method = _class.getMethod("dispatchPointerEvent", MotionEvent.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
MotionEvent evntDown = MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN,
10, 10, 0);
method.invoke(_class,evntDown);
MotionEvent evntUp = MotionEvent.obtain(SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),
MotionEvent.ACTION_UP,
10, 10, 0);
method.invoke(_class,evntUp);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
Или может быть мне нужно создать STUB? Я не знаю, как, любая помощь?