【问题标题】:How to configure Android AccessibilityService如何配置 Android AccessibilityService
【发布时间】:2017-05-05 15:13:48
【问题描述】:

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

我可以收到所有public void onAccessibilityEvent(final AccessibilityEvent accessibilityEvent) {}

但是我的服务从未收到protected boolean onGesture(int gestureId) {}protected boolean onKeyEvent(KeyEvent event) {} 来电。

当我在无障碍设置中启用无障碍服务时,我看到服务连接正常

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

我没有配置什么?还是配置错误?

我的清单文件如下所示

<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无障碍服务内容是:-

<?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如下:-

@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);
}

【问题讨论】:

    标签: android android-service android-accessibility


    【解决方案1】:

    可能你需要更改标志

    <?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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多