首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置Android AccessibilityService

如何配置Android AccessibilityService
EN

Stack Overflow用户
提问于 2017-05-05 15:13:48
回答 1查看 5K关注 0票数 3

我正在调查安卓AccessibilityService,并希望看到所有可能的事件类型,手势和关键事件。

我能接收到所有的public void onAccessibilityEvent(final AccessibilityEvent accessibilityEvent) {}

但是,我的服务nevers接收protected boolean onGesture(int gestureId) {}protected boolean onKeyEvent(KeyEvent event) {}调用。

当我在辅助功能设置中启用辅助功能服务时,我会看到服务连接确定。

我可以看到服务从public void onAccessibilityEvent(final AccessibilityEvent accessibilityEvent) {}方法中退出。

我没有配置什么?还是配置不正确?

我的清单文件是这样的

代码语言:javascript
复制
<service
    android:name=".MyAccessibilityService"
    android:label="My Accessibility"
    android:enabled="true"
    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/accessibilityservice" />
</service>

xml可访问性服务内容如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackSpoken"
    android:accessibilityFlags="flagDefault"
    android:canRequestEnhancedWebAccessibility="true"
    android:canRequestFilterKeyEvents="true"
    android:canRequestTouchExplorationMode="true"
    android:canRetrieveWindowContent="true"
    android:notificationTimeout="1000"
    android:packageNames="com.research.my.accessibility" />

服务AccessibilityServiceInfo如下:

代码语言:javascript
复制
@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    Log.d("TAG", "onServiceConnected");

    final AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
    accessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    accessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
    accessibilityServiceInfo.packageNames = new String[] {"com.research.my.accessibility"};
    accessibilityServiceInfo.notificationTimeout = 1000;
    setServiceInfo(accessibilityServiceInfo);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-05 16:57:50

可能你需要更换旗子

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeContextClicked|typeViewClicked"
android:packageNames="com.example.andres.eventcapture"
android:accessibilityFlags="flagRequestFilterKeyEvents"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="50"
android:canRetrieveWindowContent="true"
android:settingsActivity=""
android:canRequestFilterKeyEvents="true"
/>

就像这样。

或者您也可以尝试FLAG_REQUEST_TOUCH_EXPLORATION_MODE

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

https://stackoverflow.com/questions/43808450

复制
相关文章

相似问题

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