0

我正在寻找构建一个应用程序(具有 root 权限)可以访问另一个应用程序上的 ui 并单击屏幕上的按钮。我已经看到许多宏应用程序和一些“机器人”应用程序都做到了这一点。我知道他们使用“设备管理员”,并且我看到一些需要“覆盖其他应用程序”的权限。我不是在寻找全面的指南,而且我知道我必须使用某种 ocr 软件来处理 ui 元素。有人可以给我一些指示吗?示例: https ://forum.xda-developers.com/showthread.php?t=2241770 感谢您的帮助!泰纳

4

1 回答 1

0

我不知道他们是怎么做的,但一种可能的方法是通过inputshell 命令。我希望普通程序没有使用它的权限,但是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 回答