这是Koushik Dutta - https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm的Vysor的链接。
它允许你从个人电脑上控制你的Android设备。然而,长期以来困扰我的一件事是,它能够在手机上创造触控事件,即使它是没有根的。
在对应用程序和chrome扩展进行了一些修改之后,我意识到他使用以下方式创建了一个单独的进程-
sh -c "CLASSPATH=/data/app/com.koushikdutta.vysor-1/base.apk /system/bin/app_process32 /system/bin com.koushikdutta.vysor.Main"Main类包含通过反射将触摸事件传递给框架的代码。
上面的代码将Main类作为一个单独的进程执行,其中shell作为执行该进程的用户。
不过,据我所知,在你自己的应用程序之外创建触摸事件的唯一方法是如果你是root用户。
有人知道这件事吗?
发布于 2016-01-19 11:31:43
我已经想明白了。
问题是,shell用户还可以在屏幕上创建所有的触摸事件。当你在PC上做adb shell时,你的手机通过USB电缆连接到它,你会被自动分配给用户shell。
他所做的就是,然后使用这个Main用户作为一个单独的进程启动他的shell类。现在,该Main类中的shell代码具有与shell用户相同的权限(因为它是linux)。
而且,在这个类中,他使用反射将触摸事件传递给Android框架。然后,框架会自动将触摸事件传播到窗口。
看看我在自己的应用程序中实现的这两个类-- Main.java和EventInput.java。
但是请记住,由于这个Main类必须在一个单独的进程中运行,所以它不能访问绑定它的应用程序的内存。为此,我必须使用套接字机制来传输数据。即使是援助也可以用来解决这个问题。
https://stackoverflow.com/questions/32954720
复制相似问题