今天用一个洋气点的标题(不就是小学生也能看懂的英文吗),是因为 Android 自动化测试报了个错:Injecting to another application requires INJECT_EVENTS permission。为此我闹了点笑话。现在仍然是疫情期间,所以在家远程办公时收到同事发来的问题,于是在网上搜到一个答案
竟然是因为 USB 调试没打开呢?毕竟是在排查问题,只能先看看我远程的设备这一项是怎么样的。操作到开发者模式以后,发现远程设备的 USB 调试是打开的,那得关闭一下,然后自己跑跑看会不会报上面的问题吧。于是我毫无预兆的点了关闭,紧接着也收到了一条提醒“device not found”
纳尼?这可是我唯一能调试的远程设备,我赶紧 adb devices 发现设备列表里刚刚的设备确实没了,我去**的,网上这都什么回答,把我坑惨了。求人不如求代码呢,我怒把异常堆栈翻出来,决定开始分析
W System.err: java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
W System.err: at android.os.Parcel.readException(Parcel.java:2013)
W System.err: at android.os.Parcel.readException(Parcel.java:1959)
W System.err: at android.app.IUiAutomationConnection$Stub$Proxy.injectInputEvent(IUiAutomationConnection.java:288)
W System.err: at android.app.UiAutomation.injectInputEvent(