Android - "Faking" 触摸事件无效
Android - "Faking" a touch event not working
我想伪造一个触摸事件,我已经得到了可能的答案here。然而,当我试图让它工作时,它没有工作。
注意我是运行跟帖中的以下代码
private Handler handler = new Handler(Looper.getMainLooper());
private final Runnable runnable = new Runnable() {
@Override
public void run() {
View ParentView = (View)view.getRootView();
long downTime;
long eventTime;
Log.v("Screen Tapper", "Start Tapping");
Log.v("Screen Tapper", "tapTimes ----- "+1);
downTime = eventTime = SystemClock.uptimeMillis();
MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x-5, y-5, 0);
ParentView.onTouchEvent(event);
Log.v("Screen Tapper", "touchDown ----- "+x+","+y);
handler.postDelayed(runnable, 100000);
downTime = eventTime = SystemClock.uptimeMillis();
MotionEvent event2 = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x-5, y-5, 0);
ParentView.onTouchEvent(event2);
Log.v("Screen Tapper", "touchUp ----- "+x+","+y);
handler.postDelayed(runnable, 100000);
}
};
当我想启动或停止线程时,我基本上会调用
Handler.post(runnable);
或
Handler.removeCallBack(runnable);
但是,此方法无效。
我在多款游戏甚至我自己的应用程序上都试过了。
我知道这个线程是 运行 因为日志记录正在工作。然而,按钮只是没有被按下。
感谢任何帮助
不可能向其他应用程序发送任意虚假触摸事件,除非是在已获得 root 权限的设备上。即使在那里,它也会通过低级 Linux 输入内容 AFAIK 而不是通过 Android SDK。
我想伪造一个触摸事件,我已经得到了可能的答案here。然而,当我试图让它工作时,它没有工作。
注意我是运行跟帖中的以下代码
private Handler handler = new Handler(Looper.getMainLooper());
private final Runnable runnable = new Runnable() {
@Override
public void run() {
View ParentView = (View)view.getRootView();
long downTime;
long eventTime;
Log.v("Screen Tapper", "Start Tapping");
Log.v("Screen Tapper", "tapTimes ----- "+1);
downTime = eventTime = SystemClock.uptimeMillis();
MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x-5, y-5, 0);
ParentView.onTouchEvent(event);
Log.v("Screen Tapper", "touchDown ----- "+x+","+y);
handler.postDelayed(runnable, 100000);
downTime = eventTime = SystemClock.uptimeMillis();
MotionEvent event2 = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x-5, y-5, 0);
ParentView.onTouchEvent(event2);
Log.v("Screen Tapper", "touchUp ----- "+x+","+y);
handler.postDelayed(runnable, 100000);
}
};
当我想启动或停止线程时,我基本上会调用
Handler.post(runnable);
或
Handler.removeCallBack(runnable);
但是,此方法无效。
我在多款游戏甚至我自己的应用程序上都试过了。 我知道这个线程是 运行 因为日志记录正在工作。然而,按钮只是没有被按下。
感谢任何帮助
不可能向其他应用程序发送任意虚假触摸事件,除非是在已获得 root 权限的设备上。即使在那里,它也会通过低级 Linux 输入内容 AFAIK 而不是通过 Android SDK。