android - 辅助功能服务单击自定义视图不起作用(performClick 未覆盖)
问题描述
如何从 Accessibility Service 中单击自定义视图(iOS 样式的开关),其中 onTouchEvent 方法被覆盖,但 performClick 没有。我通过单击视图在日志中显示所有事件创建了一种在服务中进行调试的方法。当我单击除此自定义视图之外的所有按钮时,日志中会显示。如果您通过 id 找到视图并从 AccessibilityService 调用 performAction(CLICK),它绝对不会响应。我知道可以使用 dispatchGesture 并模拟滑动,但它仅适用于 Android 7.0 (api 24)。这种情况有什么解决方法吗?提前感谢您的任何提示。无障碍服务配置:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged"
android:accessibilityFlags="flagDefault|flagIncludeNotImportantViews|flagReportViewIds|flagRequestTouchExplorationMode"
android:canRetrieveWindowContent="true"
android:notificationTimeout="100"
android:canRequestTouchExplorationMode="true"
android:canPerformGestures="true"
android:settingsActivity="com.example.helper.MainActivity"/>
解决方案
不幸的是,我不相信有解决方法。辅助功能服务依赖于应用程序共享有关它们显示的 UI 的信息。如果应用程序不公开此类操作,那么您实际上无法恢复信息。
即使使用手势调度 API,您也不确定哪些视图是可操作的。
推荐阅读
- sql-server - 已协商获取 `TLSv1。尝试连接到 MS SQL 服务器时,请更新服务器和客户端以至少使用 TLSv1.2
- google-api - Google-Calendar API - 从 C++ 调用的最佳库语言
- firebase - 如何在 Go 服务器应用程序中配置凭据文件以使用 Firebase 模拟器
- javascript - 错误:在渲染器中加载非上下文感知本机模块:@serialport\bindings\build\Release\bindings.node'
- arrays - 这个用于查找方阵的对角差的 Swift 代码有什么问题?
- java - systemd 找不到 Java
- java - 这是否被视为循环依赖(这是一种好习惯)?
- swift - Swift Core-Data 从属性列表中删除项目
- ios - 将数据中的字符串编码为 utf8 字符串不等于预期值?
- ajax - 返回Json时dotnet中的Ajax错误对象对象