Android:在窗口下的任何应用程序中模拟触摸的后台服务

时间:2015-05-12 11:39:08

标签: android touch android-5.0-lollipop

我有Service可以使用包含自定义Canvas的{​​{1}}在所有应用程序之上绘制SYSTEM_ALERT_WINDOW

我的View和自定义Service都实施View

当自定义视图返回View.OnTouchListener时,服务的onTouch(View v, MotionEvent ev){}方法返回true。这样,我就可以在所有应用之上显示自定义false,并仍与基础View进行互动。这部分有效。

我还希望Activity模拟Service下方当前Activity指定坐标中的触摸事件。

我希望我可以在自定义视图上调用SYSTEM_ALERT_WINDOW,因为View.dispatchTouchEvent(...)返回onTouch(...),触摸事件会传递给基础false。它不起作用。

如何在这种情况下模拟任何活动中的触摸事件?

我使用了以下来源的代码......

在所有应用程序之上绘制画布:

http://www.piwai.info/chatheads-basics/

Draw an Android canvas on top of all applications?

将触摸传递给底层应用:

How can I interact with elements behind a translucent Android app?

模拟触摸:

How to simulate a touch event in Android?

1 个答案:

答案 0 :(得分:0)

AFAIK,出于明显的安全原因,你不能,除了可能在root设备上。即使是辅助功能API也不支持此AFAICT。允许任意应用程序伪造其他应用程序的输入将是一个主要的安全漏洞。

如果您的目标是在测试期间执行此操作,则仪器测试允许您在自己的应用中模拟触摸事件。