Midscene 控制 Android 设备点击时报 SecurityException INJECT_EVENTS 权限错误怎么排查?
2026/9/15 10:53:40 网站建设 项目流程

Midscene 控制 Android 设备点击时报 SecurityException INJECT_EVENTS 权限错误怎么排查?

【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene

用 Midscene 通过 adb 控制 Android 设备时,设备明明已经连上,但执行点击(tap)类操作却报错,典型信息如下:

Error: Exception occurred while executing 'tap': java.lang.SecurityException: Injecting input events requires the caller (or the source of the instrumentation, if any) to have the INJECT_EVENTS permission.

这个错误的含义是:执行注入输入事件的调用方没有 INJECT_EVENTS 权限。按照 Android 平台文档 的常见问题说明,这类问题的排查方向是设备端的开发者选项配置,而不是 Midscene 的脚本或模型配置。

确认错误现象与适用场景

先确认你遇到的就是同一个问题:

  • 设备已通过数据线(或 adb 网络连接)连上电脑,adb devices -l能看到设备;
  • Midscene 的截图、连接等步骤正常,但tap这类点击操作失败,抛出上面那段SecurityException ... INJECT_EVENTS permission错误。

如果连设备都不可见,说明问题还在 adb 连接层面,应先走文档中「准备 Android 设备」的通用排查,而不是本文的路径。

检查 adb 连接是否就绪

在动设备设置之前,先用文档给出的命令确认 adb 侧没有问题:

adb devices -l

出现类似下面这样的输出代表连接成功(以下为文档示例):

List of devices attached s4ey59 device usb:34603008X product:cezanne model:M2006J device:cezan transport_id:3

如果这里看不到设备,先解决 adb 连接问题;如果能看到设备但 tap 报SecurityException,继续下一步。

在开发者选项中开启所需开关

问题的根因在设备的开发者选项配置上。按文档要求,在系统设置的开发者选项中确认以下选项已开启:

  1. USB 调试
  2. USB 调试(安全设置)(如果设备上存在该选项)

文档同时提示需要确保设备已解锁(英文文档表述为 "USB debugging is enabled and the device is unlocked in developer options")。官方文档中有一张开发者选项截图,可以看到这两个开关的位置:

其中「USB 调试(安全设置)」是 Android 14 起常见的关键项,专门控制是否允许注入模拟按键/触摸事件。如果你的 Android 版本没有这个选项,只需确认「USB 调试」已开启即可。

改完后,重新执行之前失败的点击操作(重跑脚本或 Playground 中的动作),不再抛出SecurityException: ... INJECT_EVENTS permission即表示问题解决。

验证控制是否恢复

文档推荐的验证方式是 Android Playground,无需编写代码即可确认aiAct等核心能力是否可用:

npx --yes @midscene/android-playground

启动后在 Playground 窗口执行一次点击类动作。文档说明 Playground 与@midscene/android共享相同的代码实现,在 Playground 上验证通过的流程,用脚本运行时行为一致,所以这一步通过基本可以确认点击权限问题已消除。

如果你是在跑脚本,直接重跑原脚本即可;脚本运行结束后控制台出现Midscene - report file updated: /path/to/report/some_id.html提示时,可在浏览器中打开该 HTML 报告回放每次交互,确认点击步骤真实生效。

边界与注意事项

  • 该排查路径针对的是「设备已连接、但注入点击事件被系统拒绝」这一种错误;如果报错是 adb 找不到设备、截图黑屏、文本被输入法改写等其他现象,文档中对应的是不同的 FAQ 条目,不属于本问题。
  • 「USB 调试(安全设置)」开关是否存在取决于设备的 Android 版本和 ROM,不是所有设备都有;文档的表述就是「如果存在」则一并开启。
  • 若你在用自定义 adb 路径或远程 adb 服务器,可参考 Android 平台文档 中「如何使用自定义的 adb 路径或远程 adb 服务器」一节,但那与 INJECT_EVENTS 权限错误是两类问题。

【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询