首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AccessibilityService中绕过TouchExplorationMode?

如何在AccessibilityService中绕过TouchExplorationMode?
EN

Stack Overflow用户
提问于 2017-02-15 00:47:48
回答 1查看 1.4K关注 0票数 0

我已经被困在这个问题上有一段时间了.

我有一个用来读取屏幕内容的AccessibilityService。其中一些内容被隐藏在ListView中。如果我在AccessibilityService上启用TouchExplorationMode并触摸listView中的项目,就可以看到内容。

但是,如果启用此功能,则所有单次触摸手势都将作为悬停手势拾取。我发现您不能以编程方式启用和禁用此选项。有没有办法将鼠标悬停事件转换回触摸事件?

我找到了这个converting hover to touch using Views。然而,我需要相同的东西,但从一个没有视图的AccessibilityService

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2017-02-26 09:04:40

在TouchExplorationMode打开的情况下,不能将悬停事件直接传递到应用程序窗口。这是不可能的。但是,是什么让您认为您不能通过编程方式启用和禁用TouchExplorationMode?这将是错误的。下面是你如何做到这一点。

代码语言:javascript
复制
public class YourA11yService extends AccessibilityService {

    private void enableTouchExploration() {
        AccessibilityServiceInfo info = mInstance.getServiceInfo();

        info.flags |= AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;

        mInstance.setServiceInfo(info);
    }

    private void disableTouchExploration() {
        AccessibilityServiceInfo serviceInfo = mInstance.getServiceInfo();

        serviceInfo.flags &= ~AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;

        mInstance.setServiceInfo(serviceInfo);
    }

}

不过,您不需要打开触摸探索模式来查找此内容。只需在当前窗口内容中查找列表视图。为什么你必须触摸它才能访问它?

编辑: AndroidManifest.xml

代码语言:javascript
复制
    ...
    <service
        android:name=".A11yService"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >

        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>

        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/service_config" />

    <
    ...

ServiceConfig.xml (R.xml.service_config)

代码语言:javascript
复制
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
   ...
   android:canRequestTouchExplorationMode="true"
   android:accessibilityFlags="flagIncludeNotImportantViews"
   .../>

注意:我已经删除了很多脚手架和其他基本属性,将其归结为使其正常工作所需的最低设置。显然,这些文件还有其他重要的方面!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42231679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档