根本没有调用onAccessibilityEvent

vip*_*ari 4 android accessibility accessibility-api accessibilityservice android-accessibility

我正在努力实现一个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>
Run Code Online (Sandbox Code Playgroud)

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"
    />
Run Code Online (Sandbox Code Playgroud)

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*win 9

代码中的一切似乎都是正确的。

尝试以下方法之一:

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

  2. 重新启动设备。

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


Asa*_*pha 5

我需要在accessibility_service_config文件中添加反馈类型才能使其正常工作.

尝试添加此功能

android:accessibilityFeedbackType="feedbackAllMask"
Run Code Online (Sandbox Code Playgroud)

使用Android 7.1.2在Nexus 6P上进行测试


shh*_*hhp 2

您似乎accessibility_service_config缺少定义您想要监控的应用程序的软件包。AccessibilityService加入。android:packageNames="app.package.name"accessibility_service_config

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

艾特:

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