- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是 Koushik Dutta 的 Vysor 链接 - https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm
它可以让您从 PC 控制您的 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。
有人知道吗?
最佳答案
我想通了。
问题是 shell
用户也可以在整个屏幕上创建触摸事件。当您从 PC 执行 adb shell
时,通过 USB 数据线将您的手机连接到它,系统会自动为您分配用户 shell
。
他所做的是,然后他使用这个 shell
用户将他的 Main
类作为一个单独的进程启动。现在,Main
类中的 Java 代码与 shell
用户具有相同的权限(因为 duh,它是 linux)。
并且,在该类中,他使用反射将触摸事件传递给 Android 框架。然后,框架会自动将触摸事件传播到窗口。
看看我在我自己的一个应用程序中实现的这两个类 - Main.java和 EventInput.java .
但请记住,由于此 Main
类必须在单独的进程中运行,因此它无法访问 bundle 它的应用程序的内存。为此,我必须使用套接字机制来传输数据。甚至 aidl 也可以用于此目的。
关于android - vysor 如何在非 root 设备上创建触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32954720/
我是一名优秀的程序员,十分优秀!