我知道这是一个有点重复的问题。我已经回顾了关于SO和其他几个网站的各种问题,但找不到满足我需求的单一答案。
要求
1)我有X,Y坐标,我想创建MotionEvent并将其发送到最顶层的活动/视图。
2)我必须在自己的App中注入它。因此,不应要求 Inject_Events权限。
3)虽然我有坐标,我不知道,活动或视图位于该位置。所以Activity.dispatchTouchEvent对我不起作用。。 (view.dispatchTouchEvent可以工作,但我不知道视图。)
4) Instrumentation也无济于事,因为他们没有单一方法在x,y位置注入触摸事件。
5)InputManager有隐藏方法injectInputEvent但我不知道如何访问injectInputEvent并编译它?
任何帮助表示赞赏!
答案 0 :(得分:5)
dispatchTouchEvent(MotionEvent.obtain(
SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN, Xinput, Yinput, 0));
您无需指定视图,该事件将注册到前台活动。将Xinput和Yinput替换为您的值。
答案 1 :(得分:1)
为了更大的群体的利益 - rootViewController.dispatchTouchEvent(而不是activity.rootViewController)就像魅力一样。