这是Vousor by Koushik Dutta的链接 - https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm
它可让您通过PC控制Android设备。 然而,有一件事让我感到困惑,因为很长一段时间它就能在手机上创建触摸事件,即使它没有根据也是如此。
在对应用程序和chrome扩展程序进行一些修补之后,我意识到他使用以下方式创建了一个单独的进程 -
if welcome.lower() in ('hello', 'hey', 'hej'):
sh -c "CLASSPATH=/data/app/com.koushikdutta.vysor-1/base.apk /system/bin/app_process32 /system/bin com.koushikdutta.vysor.Main"
类包含通过反射将触摸事件传递给框架的代码。
上面的代码将Main
类作为一个单独的进程执行,当执行该进程的用户有Main
时。
据我所知,在您自己的应用之外创建触摸事件的唯一方法是,如果您是root用户。
有没有人对此有任何想法?
答案 0 :(得分:11)
我已经明白了。
问题是shell
用户也可以在整个屏幕上创建触摸事件。当您从PC上adb shell
进行操作时,通过USB线连接手机,系统会自动为用户分配shell
。
他所做的是,然后他使用此Main
用户作为单独的进程启动他的shell
课程。现在,Main
类中的Java代码具有与shell
用户相同的权限(因为duh,它的linux)。
并且,在该课程中,他使用反射将触摸事件传递给Android框架。然后,框架会自动将触摸事件传播到窗口。
看一下我在自己的应用中实施的这两个课程 - Main.java和EventInput.java。
但请记住,由于此Main
类必须在单独的进程中运行,因此无法访问捆绑它的应用程序的内存。为此,我必须使用套接字机制来传输数据。甚至可以使用aidl。