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

时间:2011-03-09 01:06:04

标签: android events

我知道如何“合成”一个MotionEvent:

  event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0);

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

这有可能吗?

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

2 个答案:

答案 0 :(得分:17)

您要做的事情完全可能而且简单:

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);
}

答案 1 :(得分:4)

不,它被设计阻止了。关注的是这样的特征可以用来颠覆整个安全模型 - 例如通过“注入”触摸来联系市场,安排安装,接受安全警告......所有这些都是独立的。

已经对此进行了详细讨论here及以下内容。

如果这回答了您的问题,请点击左侧的复选标记 - 谢谢!