我正在测试t他的教程实现可访问性服务以捕捉USSD菜单上的一些文本。
这是我第一次在调试模式下使用Android编译和启动应用程序时,它工作得很好:
我可以在调试器中看到这一行:
Log.d(TAG, "onServiceConnected");在我调用USSD菜单之后,我就可以看到调试器中响应消息的内容了。
但是,如果我断开电话,然后再次尝试同一应用程序而不作任何修改,则可访问性服务似乎无法工作,甚至无法启动,因为我甚至看不到调试器中的Log.d行。
Log.d(TAG, "onServiceConnected");我尝试过以下单元测试:
1.如果我尝试卸载应用程序并重新编译,仍然不能工作。
2.如果我卸载这个应用程序,重新启动手机,然后重新编译,就会再次工作,直到下一次我从Android拔下和插入USB电缆来运行一个新的调试。
3.如果我只是使用Android的refactor选项重命名可访问性服务(例如,在名称后添加一个2),则将再次工作,直到下次我拔出并再次插入USB线缆从Android运行新的调试为止。
当我拔掉USB电缆时,可访问性服务似乎在某个地方卡住或崩溃,而该应用程序无法在下次重新启动它。我还可以在控制台中看到以下错误消息,这使我认为这就是问题所在:
((latest content captured from the USSD popup))
--- the USB cable is unplugged and plugged again ---
03-22 21:43:04.931 5774-5774/com.myapp D/UssdCatcher3: onAccessibilityEvent
03-22 21:43:04.932 5774-5774/com.myapp D/UssdCatcher3: com.myapp.MainActivity
03-22 21:43:12.023 845-1950/? W/ActivityManager: Scheduling restart of crashed service com.myapp/.UssdCatcher3 in 1000ms
03-22 21:43:13.033 845-858/? I/ActivityManager: Start proc 10243:com.myapp/u0a54 for service com.myapp/.UssdCatcher3
03-22 21:43:16.488 845-858/? W/ActivityManager: Scheduling restart of crashed service com.myapp/.UssdCatcher3 in 1000ms
03-22 21:43:16.490 845-858/? I/ActivityManager: Force stopping service ServiceRecord{cb2cd91 u0 com.myapp/.UssdCatcher3}
03-22 21:43:55.225 10882-10882/? W/dex2oat: Compilation of java.lang.Object com.myapp.UssdCatcher3.access$super(com.myapp.UssdCatcher3, java.lang.String, java.lang.Object[]) took 109.013ms这很奇怪,知道为什么会发生这种事吗?
非常感谢你的建议!
发布于 2022-02-10 19:29:03
我的应用程序也有同样的问题,我的解决方案是,当我的应用程序无法与可访问性服务建立通信时,请用户重新启动他的手机。
https://stackoverflow.com/questions/42955267
复制相似问题