如何通过系统发送合成的MotionEvent?

Reg*_*kie 13 events android

我知道如何"合成"一个MotionEvent:

  event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0);
Run Code Online (Sandbox Code Playgroud)

我所坚持的是如何通过系统"发送/发布/发布/分发"它,以便"真实"用户实际用他或她的手指触摸屏幕时处理它.

这有可能吗?

如果是这样,我该如何做到这一点?

pry*_*yma 18

你想要做的是完全可能和简单:

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);
}
Run Code Online (Sandbox Code Playgroud)


DJC*_*DJC 5

不,这是设计使然。令人担心的是,这样的功能可用于颠覆整个安全模型-例如通过“注入”触摸来联系市场,安排安装,接受安全警告……全部依靠它自己。

此处和后面对此进行了详细讨论。

如果这回答了您的问题,请单击左侧的对勾-谢谢!