Как отправить синтезированный MotionEvent через систему?
Я знаю, как "синтезировать" MotionEvent:
event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0);
Я застрял в том, как "отправить/отправить/пожар/распространить" его через систему, чтобы он обрабатывался "как будто", реальный пользователь на самом деле коснулся экрана своим пальцем.
Возможно ли это вообще?
Если да, то как это сделать?
Ответы
Ответ 1
Нет, это предотвращено дизайном. Вызывает беспокойство то, что такая функция может использоваться для подрыва всей модели безопасности - например, путем "инъекций" прикосновений, чтобы связаться с рынком, организовать установку, принять предупреждения о безопасности.. все по-своему.
Это обсуждалось в некоторой степени здесь и далее.
Если это ответит на ваш вопрос, любезно нажмите галочку влево - спасибо!
Ответ 2
То, что вы пытаетесь сделать, совершенно возможно и просто:
void simulateEventDown( View v, long x, long y )
{
MotionEvent e = MotionEvent.obtain( SystemClock.uptimeMillis(),
SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN,
x, y, 0);
v.dispatchTouchEvent(e);
}