root应用如何访问其他应用的ui?
How do root apps access the ui of other apps?
我正在寻找一个应用程序,它(具有 root 权限)可以访问另一个应用程序上的 ui 并单击屏幕上的按钮。我已经看到许多宏应用程序和一些 "bot" 应用程序都这样做了。我知道他们使用 'device administrator' 并且我看到一些需要 'overlay over other apps' 许可。我不是在寻找全面的 guide,我知道我必须使用某种 ocr 软件来处理 ui 元素。有人可以给我一些指示吗?示例:https://forum.xda-developers.com/showthread.php?t=2241770
谢谢你的帮助!
泰恩
我不知道他们是怎么做到的,但一种可能的方法是通过 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()));
如 Any way to run shell commands on android programmatically? 中所述。 (我已经稍微调整了一下,还没有实际测试过,所以可能需要一些摆弄。)
请注意,它不允许您查看按钮的位置,因此您必须事先知道自己在做什么。
您也可以尝试 Instrumentation
,如此处所述:Android simulate key press
我正在寻找一个应用程序,它(具有 root 权限)可以访问另一个应用程序上的 ui 并单击屏幕上的按钮。我已经看到许多宏应用程序和一些 "bot" 应用程序都这样做了。我知道他们使用 'device administrator' 并且我看到一些需要 'overlay over other apps' 许可。我不是在寻找全面的 guide,我知道我必须使用某种 ocr 软件来处理 ui 元素。有人可以给我一些指示吗?示例:https://forum.xda-developers.com/showthread.php?t=2241770 谢谢你的帮助! 泰恩
我不知道他们是怎么做到的,但一种可能的方法是通过 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()));
如 Any way to run shell commands on android programmatically? 中所述。 (我已经稍微调整了一下,还没有实际测试过,所以可能需要一些摆弄。)
请注意,它不允许您查看按钮的位置,因此您必须事先知道自己在做什么。
您也可以尝试 Instrumentation
,如此处所述:Android simulate key press