Android注入触摸事件

时间:2013-09-10 05:38:37

标签: android touch motionevent

我知道这是一个有点重复的问题。我已经回顾了关于SO和其他几个网站的各种问题,但找不到满足我需求的单一答案。

要求

1)我有X,Y坐标,我想创建MotionEvent并将其发送到最顶层的活动/视图。

2)我必须在自己的App中注入它。因此,不应要求 Inject_Events权限

3)虽然我有坐标,我不知道,活动或视图位于该位置。所以Activity.dispatchTouchEvent对我不起作用。。 (view.dispatchTouchEvent可以工作,但我不知道视图。)

4) Instrumentation也无济于事,因为他们没有单一方法在x,y位置注入触摸事件。

5)InputManager有隐藏方法injectInputEvent但我不知道如何访问injectInputEvent并编译它?

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:5)

dispatchTouchEvent(MotionEvent.obtain(
                    SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
                    MotionEvent.ACTION_DOWN, Xinput, Yinput, 0));

您无需指定视图,该事件将注册到前台活动。将Xinput和Yinput替换为您的值。

答案 1 :(得分:1)

为了更大的群体的利益 - rootViewController.dispatchTouchEvent(而不是activity.rootViewController)就像魅力一样。