安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
CSDN博客09-09 17:52
安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
有时我们需要使用安卓实现在后台模拟系统按键,比如对音量进行调节(模拟音量键),关闭前台正在运行的App(模拟返回键),或者模拟触屏事件。但是对于原生安卓系统而言,后台进程关闭前台进程,甚至模拟用户事件,进而操控整个系统,是不符合系统安全原则的,如果有这样的漏洞被病毒或恶意软件所利用,会非常危险。
由于一些特殊原因,我恰巧需要实现这样的功能,而又没有条件自行编译安卓系统(但是可以利用Root权限,因为Root权限的获取相对简单很多,并且很多用户的安卓设备都有Root过)。网上也看到很多人在提类似的问题,很多人讨论了半天,结果都是无解。于是我花了很大精力,最后终于找到了解决方案。
在网上查找了很多资料,主要找到两种方法:Instrumentation和IWindowManager。
使用 Instrumentation接口:对于非自行编译的安卓系统,无法获取系统签名,只能在前台模拟按键,不能后台模拟。
一种是使用 Instrumentation接口,这个接口原本是用来对软件进行测试而留出来的。经过尝试,发现这个接口可以模拟按键,但是前提是在应用处于前台时。而应用处于前台时,模拟按键基本上也没有太大的作用(模拟按键操作应用自身似乎没有很大意义)。
当应用处于后台时,这个 Instrumentation 接口就失效了。网上找到的解释是,在后台使用这个接口,需要有系统权限,也就