Android - “假装”触摸事件不起作用

时间:2015-05-29 13:25:26

标签: java android multithreading touch android-event

我想伪造一个触摸事件,我得到了可能的答案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);

但是,此方法无效。

我在多个游戏甚至是我自己的应用程序上尝试过它。 我知道这个线程正在运行,因为日志记录正在运行。但是按钮没有被按下。

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

除了可能在root设备上之外,无法向其他应用程序发送任意虚假触摸事件。即使在那里,也可能是通过使用低级Linux输入AFAIK而不是通过Android SDK。