onAccessibilityEvent 根本没有被调用

问题描述 投票:0回答:5

我正在尝试实现一个

AccessibilityService
。我在下面分享了我的代码。 当我从设置菜单打开辅助服务时,会调用
onServiceConnected()
,但根本不会调用
onAccessibiltyEvent()
。请指导我。

清单文件中的服务声明。

<service
            android:name=".MyAccessibilityService"
            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/accessibility_service_config" />
</service>

XML 文件

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/accessibility_service_description"
    android:accessibilityEventTypes="typeAllMask"
    android:canRequestFilterKeyEvents="true"
    android:accessibilityFlags="flagDefault"

    android:notificationTimeout="100"
    android:canRetrieveWindowContent="true"
    />

MyAccessibiltyService.java

public class MyAccessibilityService extends AccessibilityService {


    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Log.d(TAG,"Service Connected");

    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        System.out.println("Event Occurred");
        Log.d(TAG, "onAccessibilityEvent: event=" + event);
        AccessibilityNodeInfo nodeInfo = event.getSource();
        if (null == nodeInfo) return;


    }

    @Override
    public void onInterrupt() {
        Log.d(TAG,"Accessibility Interrupted" );

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"Service Destroyed");
    }
}

请注意,我已经检查了所有 stackoverflow 答案,因此请勿将其标记为重复。

android accessibilityservice accessibility-api accessibility
5个回答
13
投票

我需要向

accessibility_service_config
文件添加反馈类型才能使其正常工作。

尝试添加这个

android:accessibilityFeedbackType="feedbackAllMask"

在装有 Android 7.1.2 的 Nexus 6P 上进行测试


11
投票

代码中的所有内容似乎都是正确的。

尝试其中一项:

  1. 转到“设置”>“辅助功能”>“YourApp”>“禁用”,然后“启用”。

  2. 重新启动设备。

对我来说,第 2 步解决了问题。


2
投票

您的

accessibility_service_config
似乎缺少定义您的AccessibilityService想要监控的应用程序的
packages
。在
android:packageNames="app.package.name"
中添加
accessibility_service_config

您可以参考Android开发者指南这里

艾特:

如果您不提供包名称,这似乎意味着监视所有包。也许你可以尝试指定一个包看看是否有效。


0
投票

对于某些设备的功耗限制,AccessibilityService将无法正常工作,例如:vivo,您可以尝试以下方法: 设置->电池->后台功耗管理->应用程序->后台高功耗。

它对我有用。


0
投票

就我而言,我没有意识到我需要打开手机上的对讲,然后授予对我的应用程序/服务的对讲访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.