Is it possible to simulate a "click" (touch screen) by coordinates or on a view element?
-
what would this "simulation" produce? – Yevgeny Simkin May 20 '13 at 10:25
-
For example: If my app is a calculator I want "programming", you press "2" "+" "3" and "=" That is, simulate pressing on those 4 buttons. That is, the user will see without pressing anything like the "2" button is pressed alone, then the "+" ... – TyrionLannister May 20 '13 at 15:37
4 Answers
It is possible to simulate touch events on android screen. If you have the coordinates of the view then you can generate touch events by using adb shell commands. For e.g-
adb shell input tap x y
where x and y are your coordinates. You can run this command from terminal. If you want to run the command from android code then use "/system/bin/ input tap x y" and run this by using Runtime.getRuntime() method. For details please reply, happy to help! :)

- 771
- 2
- 16
- 37

- 171
- 3
- 15
As azdev suggests, try this:
view.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
Toast toast = Toast.makeText(
getApplicationContext(),
"View touched",
Toast.LENGTH_LONG
);
toast.show();
return true;
}
});
// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
MotionEvent.ACTION_UP,
x,
y,
metaState
);
// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent);

- 1
- 1

- 5,384
- 7
- 48
- 90
-
Worked, very straightforward method to simulate onTouch over view/screen. – Pelanes Apr 25 '20 at 09:41
-
-
@gumuruh : Its x and y coordinates of the device screen to which you need to deploy touch. – Basim Sherif May 11 '20 at 05:08
-
if let say i obtain a location of x,y from a webview element.... and then i want to touch on x+20 and y+20 which means more to the right position and more to the bottom position... is that still touchable? – gumuruh May 11 '20 at 05:32
-
@gumuruh: It can be touchable but you have to add a check to confirm if it's not outside the screen. And btw, y+20 means more to the top position, not the bottom. – Basim Sherif May 11 '20 at 10:58
-
y+20 is to the top? I thought it was bottom? Because x,y are started from corner left top screen right @BasimSherif? – gumuruh May 12 '20 at 06:13
-
-
-
-
if you want to click outside the app you need another framework @KaranSingla .... try google first android automation framework, you'll find several options available there... – gumuruh Mar 08 '23 at 14:23
-
I found a way. i achieved this by using GestureDescription.Builder – Karan Singla Mar 16 '23 at 16:07
presumably you have something that you wish to invoke via a click. So... if it's an actual button you can call performClick()
on it. If it's not a button, then just call whatever the method you wish to execute is, when the conditions that you expect are met. It might help if you offered a little more details as to what you're actually trying to do.

- 27,946
- 39
- 137
- 236
On a View, yes. By coordinates, a la Java Robot, not that I'm aware.
For example:
Button buttonFoo = (Button)findViewById(R.id.button_foo);
buttonFoo.performClick();

- 10,436
- 5
- 35
- 56