1
我想假觸摸事件,我已經得到了可能的答案here。但是,當我嘗試使其工作時,它不起作用。Android - 「僞裝」觸摸事件不起作用
請注意,我正在線程中運行以下代碼。
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);
然而,這種方法是行不通的。
我在多個遊戲甚至我自己的應用程序上都試過了。 我知道這個線程正在運行,因爲日誌記錄正在工作。但是按鈕只是沒有被按下。
任何幫助表示讚賞
「我在多款遊戲甚至是我自己的應用程序上都試過它」 - 它肯定不會在任何其他應用程序上運行。您無法以這種方式將假觸摸輸入發送到其他應用程序。充其量,這種事情可能在你自己的應用程序上工作。 – CommonsWare
謝謝,但我希望它可以在其他應用程序上工作。有沒有辦法?或者只是沒有辦法做這樣的事情? – Fish