我知道调用 InputManager 时有权限检查(pid/uid)。
猴子进程的 UID 与当前活动的 UID 不相等。但是为什么猴子进程可以将事件注入当前的活动窗口?
猴子进程由 adb shell 启动, adbd 进程民间猴子进程。猴子进程属于root用户组。
adb shell monkey --port 12345
用户 PID PPID VSIZE RSS WCHAN PC 名称
根 1 0 676 520 c0159a9c 00010378 S /init
根 19691 1 4716 452 ffffffff 00018498 S /sbin/adbd
根 5972 19691 440824 19700 ffffffff 40077dc8 S com.android.commands.monkey
这是因为“adb shell”用户有权限。检查 /etc/permissions/platform.xml:
<assign-permission name="android.permission.INJECT_EVENTS" uid="shell" />