我能否监听Android触摸事件?

9

我正在研究在安卓设备上检测手势和触摸操作。问题是,我的应用需要在它自己的视图之外检测这些手势,例如在其他应用程序或甚至主屏幕上。换句话说,有没有方法窃听触摸事件?我想会有一些安全措施防止这种情况发生。我只需要证明这个概念,所以我会在开发设备上尝试这个操作,该设备可以禁用任何可能阻止我执行此操作的安全措施(而不会损害任何人或泄露他们的数据)。


我认为你可以。我已经安装了一个应用程序,可以从我的电脑上激活GPS卫星,即使它被取消勾选,并且可以从PC锁定屏幕。该应用程序的名称是[AVG](https://play.google.com/store/apps/details?id=com.antivirus&feature=nav_result#?t=W251bGwsMSwxLDMsImNvbS5hbnRpdmlydXMiXQ..)。 - Adel Boutros
1
你试过使用后台服务吗? - Adel Boutros
谢谢Adel,但我认为这不是同一类问题。我想要跟踪在手机上运行的应用程序中发生的事件,使用另一个正在运行的应用程序。 - pypmannetjies
1
似乎可以使用服务来获取有关触摸事件的有限信息,在窗口管理器参数中指定覆盖类型。 - pypmannetjies
2个回答

5
按设计,您不能这样做。如果Android允许您这样做,那么这将是一个巨大的安全风险。想一想,如果您能够这样做,您就可以轻松地制作各种恶意应用程序,例如键盘记录器。至于后台服务建议,不可能使用后台服务拦截另一个应用程序的触摸事件。基本上,Google已经有意为之,您无法干扰另一个应用程序的生命周期或事件处理程序等等。事实上,即使您编写代码的意图并非恶意或非法,Google也会认为您尝试的内容是恶意代码,因为它超出了Android所选择的安全范例,因此被视为恶意,因此Google会尽力阻止您这样做。

2
然而,如果您对框架有控制权,那么肯定可以做到。您需要从源代码编译自己的Android构建,并将修改后的手势作为框架的一部分。或者,您可以更改框架以允许其他应用程序拦截触摸事件。但是,正如这个答案提到的那样,这仍然不容易,因为它超出了安全模型的范围。 - dcow
如果您可以制作自己的构建,则可以随心所欲地进行操作。不过,我是基于 OP 无法控制设备上的 Android 构建的假设下工作的。 :) - Andi Jay
感谢您的回答。尝试从源代码编译并修改框架是一个好建议。我想,为了我的研究,我可以避免这样做,并以另一种方式收集数据(这将节省时间),尽管我希望能够实现概念验证。 - pypmannetjies

1

嗯,这非常非常有限,但您可以使用后台服务上的AccessibilityEvents来跟踪悬停和屏幕探索,但是再次强调,这非常有限,但不需要您从Google获取任何特殊或神奇的权限或构建自己的ROM哈哈,希望这可以帮助您 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接