【问题标题】:How to use Accessibility Service with TYPE_WINDOW_STATE_CHANGED如何通过 TYPE_WINDOW_STATE_CHANGED 使用辅助功能服务
【发布时间】:2016-07-23 03:51:13
【问题描述】:

我尝试在打开新活动或窗口时使用辅助功能服务来处理事件。但它不起作用。

**首先,我实现了一个无障碍服务类,如下所示:

public class DemoAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    System.out.println(" DemoAccessibilityService change= " + event.getAction());

}

@Override
public void onInterrupt() {
}

@Override
protected void onServiceConnected() {
    System.out.println("DemoAccessibilityService connected");
    super.onServiceConnected();
    AccessibilityServiceInfo config = new AccessibilityServiceInfo();
    config.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
    config.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;

    if (Build.VERSION.SDK_INT >= 16)
        config.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;

    setServiceInfo(config);
}

@Override
public void onDestroy() {
    System.out.println("DemoAccessibilityService destroy");
    super.onDestroy();
}

}

配置服务有 2 个选项:(1) 使用 .xml 文件或 (2) 在源代码上动态配置。我有 demo_accessibility.xml 配置文件:

<accessibility-service
 xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools"
 android:accessibilityEventTypes="typeWindowStateChanged"
 android:accessibilityFeedbackType="feedbackGeneric"
 android:accessibilityFlags="flagIncludeNotImportantViews"
 tools:ignore="UnusedAttribute"
 android:packageNames="com.android.systemui"

/>

** 然后,我在 AndroidManifest.xml 中声明它是这样的:

<service android:name="demo.android.accessibility.DemoAccessibilityService"
             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/demo_accessibility"/>
    </service>

内置设备后,我进入“设置”并在“辅助功能”类别中打开。 但它不起作用!我该怎么办?

【问题讨论】:

    标签: android accessibility accessibilityservice


    【解决方案1】:

    你必须在 demo_accessibility.xml 文件中添加android:canRetrieveWindowContent="true"

    【讨论】:

    • 我会尝试反馈结果
    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多