onAccessibilityEvent вообще не вызывается

Я пытаюсь реализовать 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, поэтому не отмечайте их как повторяющиеся.


person vipin agrahari    schedule 09.11.2016    source источник


Ответы (3)


Мне нужно было добавить тип обратной связи в файл accessibility_service_config, чтобы он работал.

Попробуйте добавить это

android:accessibilityFeedbackType="feedbackAllMask"

Протестировано на Nexus 6P с Android 7.1.2.

person Asapha    schedule 02.04.2017

В коде вроде все правильно.

Попробуйте один из них:

  1. Перейдите в «Настройки» > «Универсальный доступ» > «YourApp» > «Отключить», а затем «Включить».

  2. Перезагрузите устройство.

Для меня шаг 2 решил проблему.

person Ashwin    schedule 12.11.2018

Кажется, вашему accessibility_service_config не хватает пакетов, определяющих приложения, которые ваш AccessibilityService хочет отслеживать. Добавьте android:packageNames="app.package.name" в accessibility_service_config.

Вы можете обратиться к руководству для разработчиков Android здесь.

Эйдт:

Ну, похоже, это означает мониторинг всех пакетов, если вы не указываете имена пакетов. Может быть, вы можете попробовать указать пакет, чтобы увидеть, работает ли он.

person shhp    schedule 09.11.2016
comment
Ага пытался. Не повезло и с этим. - person vipin agrahari; 11.11.2016