AutoJs6 icon indicating copy to clipboard operation
AutoJs6 copied to clipboard

v6.4.2无故障服务还是不太稳定,try-catch捕获到错误如下:

Open nsy9601 opened this issue 2 years ago • 6 comments

报错信息: java.lang.RuntimeException: 无障碍服务已启用但未运行 (尝试重新启用或重启设备) 注:出现上述报错信息时,脚本会停止运行,无法继续执行下面的功能了。

一、说明: 1、设置里已开启自动启用无障碍服务(默认的) 2、在查看手机的无障碍设置时,状态正常,显示autojs6是已启用状态 3、在点击菜单上的服务组中的无障碍服务开关时,开关会开一下立即又关掉,经多次重启autojs6后,又恢复正常了 4、我发现在无障碍服务出现故障(非手动关闭无障碍)时,使用auto.serivce仍然会返回服务,但这时无障碍服务虽然是开启的,但已经不能正常工作了,这就需要先关闭无障碍服务,再开启,之后无障碍服务的故障就解除了 5、可以通过Shizuku模块运行命令的方式来手动关闭和开启无障碍服务(模似重开/重启无障碍的功能,如下面的命令),但Shizuku受开发者模式及无线调试开关的影响,运行也不太稳定,因为无线调试的开关,时间长了会自已关闭,所以使用Shizuku来关闭和开启无障碍功能并不好用。

shizuku('settings put secure enabled_accessibility_services null'); // 关闭无障碍服务,null会关闭所有,如有多个应用开启无障碍,要仅关闭autojs6的无障碍,需要先let res = shizuku('settings get secure enabled_accessibility_services');得到已开启无障碍服务的列表,从中筛出autojs6的,从而关闭
shizuku('settings put secure enabled_accessibility_services org.autojs.autojs6/org.autojs.autojs.core.accessibility.AccessibilityService'); // 开启无障碍服务

二、问题: 1、autojs6的无障碍服务会在什么情况下自启,如果是通过类似auto.service来检查是否需要启动无障碍的话,如上述,对于发生故障而非关闭的情况就不好使了。 2、能不能在脚本每次运行前都重启(先关闭再开启)无障碍服务,以防止无障碍服务故障情况的发生,可能在多脚本同时运行的情况下不好处理。

三、期望: 1、当然是提升应用的稳定性,不出故障是最好的。 2、把关闭和开启无障碍服务的功能接口开放给用户,让用户在脚本里可以操作,从而增加脚本的灵活性以及处理问题的能力。

nsy9601 avatar Nov 16 '23 03:11 nsy9601

可不可以加上 auto.stop(); // 关闭无障碍服务 auto.start(); // 开启无障碍服务 auto.restart(); // 重启无障碍服务 以上三个命令并实现功能呢,真的很需要,能回复一下吗

nsy9601 avatar Nov 17 '23 03:11 nsy9601

脚本中使用 auto(true) 可以让无障碍强制重启.

另有 auto.start()auto.stop() 方法可用.

SuperMonster003 avatar Nov 17 '23 06:11 SuperMonster003

刚试了下,auto.start() 和 auto.stop() 方法真的可用,但是在用户手册中确没有提到,看来手册还有好多需要完善的地方啊,要不然还真不知道有这些可以用。

nsy9601 avatar Nov 17 '23 06:11 nsy9601

是的, 文档重写和撰写需要耗费大量精力和时间, 与 AutoJs6 软件开发难以兼顾, 如果有文档方面的特别需求, 可在文档开源仓库提交反馈, 我会按需优先处理.

SuperMonster003 avatar Nov 17 '23 06:11 SuperMonster003

报错信息: java.lang.RuntimeException: 无障碍服务已启用但未运行 (尝试重新启用或重启设备) 注:出现上述报错信息时,脚本会停止运行,无法继续执行下面的功能了。

一、说明: 1、设置里已开启自动启用无障碍服务(默认的) 2、在查看手机的无障碍设置时,状态正常,显示autojs6是已启用状态 3、在点击菜单上的服务组中的无障碍服务开关时,开关会开一下立即又关掉,经多次重启autojs6后,又恢复正常了 4、我发现在无障碍服务出现故障(非手动关闭无障碍)时,使用auto.serivce仍然会返回服务,但这时无障碍服务虽然是开启的,但已经不能正常工作了,这就需要先关闭无障碍服务,再开启,之后无障碍服务的故障就解除了 5、可以通过Shizuku模块运行命令的方式来手动关闭和开启无障碍服务(模似重开/重启无障碍的功能,如下面的命令),但Shizuku受开发者模式及无线调试开关的影响,运行也不太稳定,因为无线调试的开关,时间长了会自已关闭,所以使用Shizuku来关闭和开启无障碍功能并不好用。

shizuku('settings put secure enabled_accessibility_services null'); // 关闭无障碍服务,null会关闭所有,如有多个应用开启无障碍,要仅关闭autojs6的无障碍,需要先let res = shizuku('settings get secure enabled_accessibility_services');得到已开启无障碍服务的列表,从中筛出autojs6的,从而关闭
shizuku('settings put secure enabled_accessibility_services org.autojs.autojs6/org.autojs.autojs.core.accessibility.AccessibilityService'); // 开启无障碍服务

二、问题: 1、autojs6的无障碍服务会在什么情况下自启,如果是通过类似auto.service来检查是否需要启动无障碍的话,如上述,对于发生故障而非关闭的情况就不好使了。 2、能不能在脚本每次运行前都重启(先关闭再开启)无障碍服务,以防止无障碍服务故障情况的发生,可能在多脚本同时运行的情况下不好处理。

三、期望: 1、当然是提升应用的稳定性,不出故障是最好的。 2、把关闭和开启无障碍服务的功能接口开放给用户,让用户在脚本里可以操作,从而增加脚本的灵活性以及处理问题的能力。

应该是和手机、安卓系统有关,我在荣耀8安卓8.0手机上,无障碍一直没有问题;在VIVO安卓11手机上,无障碍也经常出问题

HDJN avatar Nov 18 '23 14:11 HDJN

auto.start() auto(true) 这两个函数还不够啊。 即便捕获这个异常:无障碍服务已启用但未运行 (尝试重新启用或重启设备)

然后调用上面的两个函数,却是跳转到无障碍权限管理页面,需要手动启用,无法自动化启用呀

wengzhenquan avatar May 05 '25 11:05 wengzhenquan