我正在做一个通用的自动化脚本.
我需要将复杂的滑动事件发送到Android屏幕,而无需专门访问重点应用程序
到目前为止,我认为最好的方法是使用adb,使用sendevent命令创建文件,将其推送到设备并从那里运行.即便如此,它也非常缓慢(与我用getevent录制并将其重新插入时相比要慢得多).
我设法优化文件,因为我发现每个sendevent块并不特别需要X和Y,但它仍然慢了几个数量级
文件的一部分示例(我正在尝试HTC One):
sendevent /dev/input/event5 3 57 49
sendevent /dev/input/event5 3 53 942
sendevent /dev/input/event5 3 54 2747
sendevent /dev/input/event5 0 0 0
sendevent /dev/input/event5 3 53 1207
sendevent /dev/input/event5 3 54 2483
sendevent /dev/input/event5 0 0 0
sendevent /dev/input/event5 3 53 1472
sendevent /dev/input/event5 0 0 0
sendevent /dev/input/event5 3 54 2218
sendevent /dev/input/event5 0 0 0
sendevent /dev/input/event5 3 53 1207
sendevent /dev/input/event5 3 54 2483
sendevent /dev/input/event5 0 0 0
sendevent /dev/input/event5 3 53 …Run Code Online (Sandbox Code Playgroud) 可能重复:
Android系统应用程序101
/ system/app和/ data/app有什么区别?两个目录中是否有一些不同的权限.
W/PackageManager(61): Not granting permission android.permission.SET_ACTIVITY_WATCHER to package
Run Code Online (Sandbox Code Playgroud)
这是一个权限的示例,如果没有使用平台签名进行签名,则不会授予应用程序.有了这个说我想知道如何在root设备上运行的任何应用程序(使用/ system/bin/su和SuperUser.apk)可以授予任何这些权限.
Process p = Runtime.getRuntime().exec("su");
p.waitFor();
Run Code Online (Sandbox Code Playgroud)
这样做会提示"accept"或"reject"超级用户对话框,但SecurityException仍会抛出s.