我正在寻找构建一个应用程序(具有 root 权限)可以访问另一个应用程序上的 ui 并单击屏幕上的按钮。我已经看到许多宏应用程序和一些“机器人”应用程序都做到了这一点。我知道他们使用“设备管理员”,并且我看到一些需要“覆盖其他应用程序”的权限。我不是在寻找全面的指南,而且我知道我必须使用某种 ocr 软件来处理 ui 元素。有人可以给我一些指示吗?示例: https ://forum.xda-developers.com/showthread.php?t=2241770 感谢您的帮助!泰纳
问问题
150 次
1 回答
0
我不知道他们是怎么做的,但一种可能的方法是通过input
shell 命令。我希望普通程序没有使用它的权限,但是adb shell
确实有,并且有根程序可能会。用法打印如下:
Usage: input [<source>] <command> [<arg>...]
The sources are:
mouse
keyboard
joystick
touchnavigation
touchpad
trackball
stylus
dpad
touchscreen
gamepad
The commands and default sources are:
text <string> (Default: touchscreen) [delay]
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
你会做类似的事情
List<String> commandLine = Arrays.asList("input touchscreen swipe 500 10 500 500 100".split(" "));
Process process = Runtime.getRuntime().exec(commandLine);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
如以编程方式在 android 上运行 shell 命令的任何方式中所述?. (我已经对其进行了一些调整,并没有对其进行实际测试,因此可能需要一些摆弄。)
请注意,它不会让您(例如)看到按钮在哪里,因此您必须事先知道自己在做什么。
您也可以尝试Instrumentation
,如此处所述:Android 模拟按键
于 2019-06-21T21:32:32.447 回答